由於Objective-C的2.0,我們有性質,一個漂亮的語法獲取和實例變量的設定值。自從Clang 3.1以來,所有屬性都是非動態的,不是隻讀的顯式getter或者沒有自定義的getter和setter,自動將合成爲給ivars。並且由於ARC我們有弱/強註釋對於其中使用由ARC定義自動合成性質的存儲器管理邏輯性質。弱/強註解
屬性仍然可以合成手動例如例如,對於由伊娃支持並且返回默認值的只讀屬性。
有時候,屬性也是有用的,如果他們不是在所有的合成。當我使用這種行爲時,我發現了一些用例:
- 自定義getter和setter,它們使用自定義ivar來存儲實際值並執行一些其他操作。
- 動態屬性,例如在
NSManagedObject
的子類中。 - 只讀屬性,它只是通過存儲在另一個屬性(例如私人屬性)中的對象的屬性。
問題:是否是有意義的根據自己的實際使用情況或不弱/強標註這些非合成的性質?最佳做法是什麼?
(https://twitter.com/kubanekl/status/427142577310408704)
注意 - 沒有明確的getter方法的只讀屬性可以自動合成。 – rmaddy
@rmaddy謝謝你的提示,我在第二句話中解決了這個問題...... –