2014-06-09 12 views
2

iOS 7 프로젝트에서 언더 스코아 iVars가 자동으로 생성 된 것 같지 않은데 왜 그런지 궁금합니다. 내 설정 :Xcode 5.1.1 자동 앵커 언더 바어 없음

에서 MyClass.h이 선언되지 않은 식별자의 사용 결과

@property (readonly) NSNumber *aNumber; 

MyClass.m

@interface MyClass() 
@property (readwrite, strong) NSNumber *aNumber; 
@end 

@implementation MyClass 

(...) 

- (NSNumber *)aNumber { 
    return _aNumber; 
} 

- (void)setANumber:(NSNumber *)aNumber { 
    _aNumber = aNumber; 
} 

@end 

: '_aNumber'.

왜 그렇습니까? 나는 언더 스코어 인 iVars가 항상 자동으로 합성 될 것이라고 생각했다. 내가 사용하는 학급 확장 때문인가요? 내가 @synthesize aNumber = _aNumber;에 넣으면 (분명히) 작동합니다.

+0

이유는 필요없는 경우 중복 ivar을 생성하는 것을 피하기 위해서입니다. –

+0

그 이유는 사용자 정의 게터 메소드를 작성했기 때문이며 자동 합성은이 경우에 사용자를 위해 아무 것도 생성하지 않기 때문에 수동으로해야합니다. – holex

답변

3

자동 합성 규칙은 예외입니다.

속성의 가져 오기 도구와 설정 도구를 모두 재정의하는 경우 속성을 수동으로 합성해야합니다.

이 자동 합성에 온 이후로 사건이었다.

는 그냥 @synthesize 라인을 추가하고이 잘 될 것입니다.