現在隨着新Xcode的發佈,人們已經說過,屬性會自動合成,並且只要您使用前綴'_'
,它們的確可以在不合成的情況下訪問。但我最近發現Xcode允許我以另一種方式訪問這些屬性 - 使用前綴'self.*'
(其中*是屬性的名稱)。我們應該不再使用@synthesize了嗎?
這是正確的嗎?我應該使用它嗎?它會傷害我的代碼嗎?
謝謝你。
現在隨着新Xcode的發佈,人們已經說過,屬性會自動合成,並且只要您使用前綴'_'
,它們的確可以在不合成的情況下訪問。但我最近發現Xcode允許我以另一種方式訪問這些屬性 - 使用前綴'self.*'
(其中*是屬性的名稱)。我們應該不再使用@synthesize了嗎?
這是正確的嗎?我應該使用它嗎?它會傷害我的代碼嗎?
謝謝你。
隨着訪問_yourProperty
實例變量,與self.yourProperty
它的getter/setter。只要你確定你沒有成本的getter/setter,兩者都是一樣的(對於getter/setter來說性能損失很小)。但是,一般情況下,您應該使用getter/setter方法(getter/setter自身除外),以備日後更改代碼。
編輯:
@Vanthel:下劃線是純粹的約定。如果沒有@synthesize
(或@synthesize foo
),編譯器會爲foo
屬性生成變量_foo
。但是,通過@synthesize foo = my_bar
,您可以指定變量my_bar
由foo
的訪問者訪問。
您能否在單獨的段落中說明使用下劃線前綴? – amcc
這是正確的。這是新編譯器的一個特性。 –
爲什麼這是新的?屬性總是使用點語法來訪問... – 2012-08-27 07:23:06
'self.property'已經可用一段時間了... – pasawaya