2012-08-31 43 views
-1

有時,引入了弧線之前,我並沒有使用@property聲明和使用只是伊娃就像如下:從MRC電弧

//Foo.h 
@interface Foo : NSObject 
{ 
    NSString *str; 
} 

- (id)initWithStr:(NSString *)newStr; 
.. 
//Foo.m 

- (id)initWithStr:(NSString *)newStr 
{ 
    if(self = [super init]) 
    { 
     str = [newStr retain]; 
    } 
    return self; 
} 

- (void)dealloc 
{ 
    [str release]; 
    [super dealloc]; 
} 
... 

如何實現這樣的事情與ARC如果我不」 t想要使用@property聲明?

+0

http://clang.llvm.org/docs/AutomaticReferenceCounting.html – Ramz

+0

只是不使用ARC如果你不想使用@property等你可以解開你已經做的東西這樣的情況從被置於ARC之下。比試圖製作一個適合圓孔的方形釘更簡單。 – AppHandwerker

回答

3

ARC只是工作:

- (id)initWithStr:(NSString *)newStr 
{ 
    if(self = [super init]) 
    { 
     str = newStr; 
    } 
    return self; 
} 

...沒有的dealloc :)在.h文件中

+0

是的,我知道,但newStr將分配不保留到str – tikhop

+2

編號str在ARC下默認爲強。所以它會被保留。 – Bourne

+0

@Bourne在問這個問題之前,我已經測試過這種情況,並且參考計數等於1而不是2 – tikhop

-1

申報海峽。

@property (nonatomic, strong) NSString *str; 

您可以在中綜合該變量。 m文件,如@sythesize str;

您可以使用self.str來指定或獲取str。 欲瞭解更多詳情,請閱讀this document

+0

我不想使用@property,我只想使用iVar – tikhop