1

내가 속성에 대한 바르를 사용하지만, 이렇게하지 않으면 :속성의 기본값은 nil입니까?

@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 

나는 그것이 nil을 반환 self.someArray을 확인 처음, _someArray을 수행하지만 그대로이 보장? 나는 ivars가 nil이라는 보장을 받았으며, ivar (_someArray은 ivar이 아니다)를 선언하지 않았기 때문에, nil이면 언제나 확실하지 않습니다.

답변

4

항상 그렇지 않습니다. Objective-C는 클래스의 모든 변수를 할당 할 때 nil로 초기화합니다. 합성 ivars도 같은 규칙을 따릅니다.

2

예, 모든 속성, ivars 및 정적 변수는 항상 nil으로 초기화되도록 정의되었습니다. 이제 ARC를 사용하면 __strong 스택 변수 (모든 객체 포인터의 기본값 인 __strong)가 전달됩니다.

3

속성은 자동으로 합성되는 경우 인스턴스 변수로 뒷받침됩니다. 예, 기본적으로 이러한 속성은 nil을 반환합니다.