2011-11-02 48 views
2

我不太瞭解彙編程序,可以像整個項目的程序集一樣理解如此複雜的代碼,但是我注意到,如果我將strong屬性放在屬性中,_objc_storeStrong調用顯示在我的調試程序的附近, ;ARC編譯器根據屬性屬性自動確定是保留還是分配重寫的類?

@interface ClassName : NSObject 

@property (strong, nonatomic) NSSet *mySet; 

@end 


@implementation ClassName 

@synthesize mySet; 

-(void)setMySet:(NSSet *)newMySet 
{ 
    mySet = newMySet; 
    //do stuff 
} 

@end 

那麼,我對嗎? ARC編譯器是否根據屬性自動確定是否保留或分配重寫的類?

回答

0

總之,是的。因爲您將該屬性設置爲strong,它將由對象保留。如果您聲明該屬性爲weak,隱含(合成)變量爲__weak NSSet *mySet並且不會保留該對象,但其是一個自動調零指針。

+0

謝謝。所以編譯器根據隱含的iVar來確定它?所以我設置了屬性,它意味着ivar,然後編譯器決定如何在其中存儲值?這對我來說並不好,但可能我會更好地理解它。 – DanSkeel

+0

是的,這是正確的。 'strong'意味着'__strong',這與MRC中的'retain'相同。 (默認值是'assign'或'unsafe_unretained',兩者都暗示'__unsafe_unretained',這與MRC中的'assign'相同。 –

相關問題