반응형
공개적으로는 읽기 전용이지만 전용 setter가있는 Objective-C 속성
이 @property
구문 을 사용하여 공개적으로 읽기 전용이지만 클래스 내에서 비공개로 호출 할 수있는 setter가있는 합성 속성을 선언 하고 싶습니다 .
Objective-C이므로 기본적으로 setFoo:
메서드가 합성되지만 클래스 자체 외부에서 호출하면 경고 (인식 할 수없는 선택기)가 발생합니다. 경고를 트리거하려면 속성을 선언해야합니다 readonly
. 클래스 내에서만 사용할 수있는 합성 세터를 강제하는 방법이 있습니까?
당신이 찾고있는 것은 클래스 확장이라고 생각합니다. 헤더에서 속성을 읽기 전용으로 선언합니다.
@interface MyClass : NSObject {
}
@property (readonly, assign) NSInteger myInteger;
@end
그런 다음 구현 파일의 클래스 확장에서 다시 선언하십시오.
@interface MyClass ()
@property (readwrite, assign) NSInteger myInteger;
@end
@implementation MyClass
@end
자세한 내용은 Apple 문서를 확인하십시오.
늦을 수도 있지만 연장없이 다음 기술을 사용했습니다.
@interface MyClass : NSObject {
NSString * name;
}
@property (readonly, strong) NSString * name;
@end
반면에 구현 파일에서
@implementation MyClass
@synthesize name;
- (id)initWithItems:(NSDictionary *)items {
self = [super init];
if(self)
{
name = @"abc";
}
return self;
}
@end
이렇게하면 값이 설정되고 읽기 전용으로 액세스 할 수 있습니다. 감사.
반응형
'Development Tip' 카테고리의 다른 글
import sun.misc.BASE64Encoder 결과 Eclipse에서 컴파일 오류 발생 (0) | 2020.11.25 |
---|---|
g ++ 컴파일 시간을 단축하는 방법 (많은 템플릿을 사용할 때) (0) | 2020.11.24 |
사용자 지정 메타 데이터 또는 구성을 package.json에 추가합니다. 유효합니까? (0) | 2020.11.24 |
SQL 레코드가 존재하지 않는 경우에만 테이블에 삽입 (0) | 2020.11.24 |
Kotlin의 정적 초기화 블록 (0) | 2020.11.24 |