可以肯定地說,如果一個類成員不需要getter或setter函數,那麼使它們的屬性和綜合它們沒有意義?使類成員的屬性和綜合它們
回答
好的,但是,即使屬性不會在實現之外設置,屬性在實現本身中也可能會有所幫助。
例如,假設你有
@interface SomeObject : NSObject {
NSThing *thing;
}
@end
@implementation SomeObject
- (id)init {
if((self = [super init]))
thing = [[NSThing someThing] retain];
return self;
}
- (void)someMethod {
if(thing)
[thing release];
thing = [[NSThing someOtherThing] retain];
}
// etc etc
@end
你爲什麼要費心思,檢查是否thing
已被分配,釋放thing
,將其設置爲別的東西,然後再retain
它,當你可以簡單地做:
- (id)init {
if((self = [super init]))
[self setThing:[NSThing someThing]];
return self;
}
- (void)someMethod {
[self setThing:[NSThing someOtherThing]];
}
如果你不想讓這些屬性類的訪問之外,你可以使用一個類
@interface SomeObject()
@property (retain) NSThing *thing;
@end
在您的.m文件中。
這實際上稱爲類擴展。一個類別*應該*有一個單獨的接口和一個單獨的實現(儘管編譯器目前允許你在沒有單獨實現的情況下離開),但類擴展只是類的主接口的延續,所以它聲明的方法必須在類的主要實現中實現,與在類的實際主接口中聲明的任何方法相同。 – 2010-08-14 05:46:51
另外,你通常不應該在你的'init'方法和'dealloc'方法中使用訪問器。如果你定義了一個自定義存取器,或者一個子類覆蓋了你的存取器,那麼這個存取器對於一個半入/半取出分配的對象可能是不安全的。你應該在類的任何地方使用訪問器,但是應該在'init'方法和'dealloc'中避免它們。 – 2010-08-14 05:48:33
- 1. Objective-C屬性和綜合邏輯
- 2. Xcode混淆 - 屬性和綜合,保留?
- 3. DataContract和數據成員屬性 - 它們是如何影響類型
- 4. VBA集合成員屬性
- 5. 自動屬性綜合(@屬性)和繼承
- 6. Boost Spirit綜合屬性混淆
- 7. Javascript類+屬性不符合它們的值
- 8. postgres綜合性能
- 9. 屬性網格集合成員名稱
- 10. 爲類禁用Objective-C自動屬性綜合?
- 11. @合成屬性和KVC
- 12. 屬性和可可合成
- 13. 澄清屬性 「進行綜合」 和 「動態」 在Objective-C 2.0
- 14. 升壓精神X3局部變量和獲得綜合屬性
- 15. 屬性和綜合:在這個代碼中,沒有「自我」?
- 16. 子類或綜合類
- 17. 自動屬性綜合不會合成協議中聲明的屬性 - 哪一個?
- 18. 觀察員和更新的類屬性
- 19. 我們可以初始化集合屬性,當我們在類中聲明它
- 20. 如何將屬性添加到屬性並使用它來訂購成員
- 21. 合併父類和子類的屬性
- 22. OWL:定義一個類的屬性和成員對象
- 23. 類型成員中的屬性和讓語句
- 24. Modelmapper與綜合性能
- 25. Kotlin綜合性能衝突
- 26. C#強類型屬性成員來描述屬性
- 27. 公共屬性和私人成員C#
- 28. WCF和[數據成員]屬性
- 29. R數據成員和屬性
- 30. 自動屬性綜合將不會綜合屬性的'描述',因爲它被讀取在ios中寫入objective-c
Objective-C中沒有「類成員」這樣的事情。你在問C++嗎?如果不是,你在問什麼? – 2010-08-14 05:44:19
我正在談論你在.h文件中的@interface之後聲明的那些東西。如果他們不被稱爲類成員,那麼他們稱爲接口成員? – 2010-08-14 06:43:16
實例變量。您應該閱讀Objective-C編程語言文檔:http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/ – 2010-08-14 12:58:12