Objective-C属性是公开只读的,但是有一个私有的setter
我想使用@property
语法来声明一个公开只读的综合属性,但是有一个可以在类中被私有调用的setter。
由于它是Objective-C,这基本上意味着setFoo:
方法将被合成,但是在类之外调用它会导致警告(无法识别的select器)。 要触发警告,我必须readonly
声明属性; 有没有办法强制一个只能在类中使用的合成setter?
我认为你要找的是类扩展。 您将在标题中声明属性只读:
@interface MyClass : NSObject { } @property (readonly, assign) NSInteger myInteger; @end
然后在实现文件中的类扩展中重新声明:
@interface MyClass () @property (readwrite, assign) NSInteger myInteger; @end @implementation MyClass @end
更多检查苹果的文档