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