我想使用@property
语法来声明一个合成属性,该属性是公开只读的,但有一个setter,可以从类内部私下调用.
由于它是Objective-C,这基本上意味着将合成setFoo:
方法,但在类本身之外调用它将导致警告(无法识别的 Select 器).为了触发警告,我必须申报财产readonly
;有没有办法强制合成一个只能在类中使用的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
要了解更多信息,请查看Apple的documentation