Development Tip

공개적으로는 읽기 전용이지만 전용 setter가있는 Objective-C 속성

yourdevel 2020. 11. 24. 20:02
반응형

공개적으로는 읽기 전용이지만 전용 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

이렇게하면 값이 설정되고 읽기 전용으로 액세스 할 수 있습니다. 감사.

참고 URL : https://stackoverflow.com/questions/5008060/objective-c-property-that-is-readonly-publicly-but-has-a-private-setter

반응형