답변

-1

여전히 초기화해야합니다.

-(MyPropertyClass*)propertyName { 
if(!propertyIvarName) { 
    _propertyIvarName = [[MyPropertyClass alloc] init]; 
} 
return propertyIvarName; 
} 

을하거나 @synthesize는 초기화하는 방법을 알고하지 않습니다 viewdidload

+0

이 패턴은 속성을 nil로 설정할 수 없기 때문에 위험 할 수 있습니다. –

+1

여러 스레드에서 속성을 호출하면 문제가 발생할 수도 있습니다. –

+3

'viewDidLoad'는보기가 아닌 것들에는 적용되지 않습니다 ... – Dave

0

번호의 속성을 초기화하기 : 게으른 초기화를 사용해보십시오. 간단한 -init?

참조 개체의 -init…에 할당하고 초기화 할 수 있습니다.

4

@synthesize을 사용하면 자동으로 초기화됩니까?

가 네,이 nil으로 초기화된다 (실제 객체가 가 할당되지, 그러나 -이 단어의 C의 의미에서 포인터 초기화되면, init 메서드가 호출 하지입니다). 모든 인스턴스 변수, 심지어 해당 @property이없는 것들, 자동 (객체의 경우) 중 하나 nil으로 초기화되어, NULL -

그런데

, 당신도이 동작을 달성하기 위해 @synthesize 필요 없어 (다른 포인터의 경우) 또는 0 (정수 및 부동 소수점의 경우) Objective-C 런타임에 의해 수행됩니다.

3

의 그것을 시도하자

@interface TypicalObject : NSObject 

@property (nonatomic) NSNumber *numberProperty; 

@end 


@implementation TypicalObject 

@synthesize numberProperty; 

@end 

... 

TypicalObject *object = [[TypicalObject alloc] init]; 
NSLog(@"object.numberProperty = %@", object.numberProperty); 

로그 문 수율 :

object.numberProperty = (null) 

그래서, 아니, 속성은 자동 인스턴스화하지 않습니다. 그러나 모든 오브젝트 인스턴스 변수는 nil으로 시작합니다.

관련 문제