我想使用@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
欲了解更多信息,请查看苹果的文档 http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html#//apple_ref/doc/uid/TP40011210-CH6-SW3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)