this blog post에 이어 내가 직면 한 문제를 해결하는 방법을 발견했습니다.속성을 보호 된 것으로 선언하는 더 나은 방법
내 문제는, 자신처럼 있었다 나는 상속과 서브 클래스에 액세스해야하는 속성을 가진 클래스를 가지고 :
@interface A : NSObject
@property (nonatomic, readonly) NSUInteger prop;
@end
@implementation A
// Don't need to synthesize nowadays
@end
@interface B : A
// No new properties
@end
@implementation B
- (void)establishValueForProp
{
_prop = 1; // PROBLEM !!!
}
@end
솔루션이 있었다 :
@interface A : NSObject {
@protected
NSUInteger _prop;
}
@property (nonatomic, readonly) NSUInteger prop;
@end
무엇 속성을 보호 된 것으로 선언하는 또 다른 방법이 있다면 궁금합니다.
코드 예제가 포함되어 있기 때문에 허용 됨 – michaelsnowden
내 답변과 달리 주 클래스 인터페이스 또는 클래스 확장에서 속성을 별도로 재정의 (또는 접근기 메서드를 제공해야합니다.)해야합니다. 하위 클래스 머리글에서 명명 된 범주 대신 클래스 확장을 사용하면이 문제가 발생하지 않습니다. –
@AndrewMadsen : 클래스 확장이 하나만 있다고 생각 했나요? 아니면 .h 당 하나의 클래스 확장인가? –