56
我想使用@property
语法来声明一个公开只读的综合属性,但它有一个可以在类中被私有调用的setter。Objective-C属性公开只读,但有一个私有setter
由于它是Objective-C,这基本上意味着setFoo:
方法将被合成,但将其称为类外本身会导致警告(无法识别的选择器)。要触发警告,我必须声明属性readonly
;有没有办法强制一个只能在类中使用的合成setter?
我想使用@property
语法来声明一个公开只读的综合属性,但它有一个可以在类中被私有调用的setter。Objective-C属性公开只读,但有一个私有setter
由于它是Objective-C,这基本上意味着setFoo:
方法将被合成,但将其称为类外本身会导致警告(无法识别的选择器)。要触发警告,我必须声明属性readonly
;有没有办法强制一个只能在类中使用的合成setter?
我认为你要找的是类扩展。你会读,只在头财产申报:
@interface MyClass : NSObject {
}
@property (readonly, assign) NSInteger myInteger;
@end
然后在您的类扩展实现文件中重新声明:
@interface MyClass()
@property (readwrite, assign) NSInteger myInteger;
@end
@implementation MyClass
@end
详细检查了苹果公司的documentation
你是正确的,另请参阅http://stackoverflow.com/questions/743586/synthesizing-properties-in-categories/3251621#3251621 – 2011-02-15 19:17:06