2011-02-15 39 views
56

我想使用@property語法來聲明一個公開只讀的綜合屬性,但它有一個可以在類中被私有調用的setter。Objective-C屬性公開只讀,但有一個私有setter

由於它是Objective-C,這基本上意味着setFoo:方法將被合成,但將其稱爲類外本身會導致警告(無法識別的選擇器)。要觸發警告,我必須聲明屬性readonly;有沒有辦法強制一個只能在類中使用的合成setter?

回答

87

我認爲你要找的是類擴展。你會讀,只在頭財產申報:

@interface MyClass : NSObject { 
} 

@property (readonly, assign) NSInteger myInteger; 

@end 

然後在您的類擴展實現文件中重新聲明:

@interface MyClass() 

@property (readwrite, assign) NSInteger myInteger; 

@end 


@implementation MyClass 

@end 

詳細檢查了蘋果公司的documentation

+1

你是正確的,另請參閱http://stackoverflow.com/questions/743586/synthesizing-properties-in-categories/3251621#3251621 – 2011-02-15 19:17:06

相關問題