1

如果我不使用性質伊娃,但做到這一點:做屬性默認爲零?

@interface someClass : NSObject 

@property (nonatomic, retain) NSArray * someArray; 

@end 

@implementation someClass 

@synthesize someArray = _someArray; 

- (void) someMethod 
{ 
    if(self.someArray == nil){ 
     // True on the first call? 
    } 
} 


@end 

我第一次檢查self.someArray返回nil一樣,_someArray,但是這是保證?我只讀了ivars保證是nil,由於我沒有申報伊娃(_someArray不是伊娃),我不確定它是否會每次都是nil

回答

4

它總是零。在分配時,Objective-C將類中的所有變量初始化爲零。合成的ivars遵循相同的規則。

2

是的,所有屬性,ivars和靜態變量都被定義爲初始化爲nil。現在使用ARC,這將轉到__strong堆棧變量(所有對象指針的默認值爲__strong)。

3

屬性由實例變量支持,如果它們自動合成 - 所以是的,默認情況下,這些屬性將返回nil