2012-08-27 40 views
0

現在隨着新Xcode的發佈,人們已經說過,屬性會自動合成,並且只要您使用前綴'_',它們的確可以在不合成的情況下訪問。但我最近發現Xcode允許我以另一種方式訪問​​這些屬性 - 使用前綴'self.*'(其中*是屬性的名稱)。我們應該不再使用@synthesize了嗎?

這是正確的嗎?我應該使用它嗎?它會傷害我的代碼嗎?

謝謝你。

+0

這是正確的。這是新編譯器的一個特性。 –

+2

爲什麼這是新的?屬性總是使用點語法來訪問... – 2012-08-27 07:23:06

+1

'self.property'已經可用一段時間了... – pasawaya

回答

3

隨着訪問_yourProperty實例變量,與self.yourProperty它的getter/setter。只要你確定你沒有成本的getter/setter,兩者都是一樣的(對於getter/setter來說性能損失很小)。但是,一般情況下,您應該使用getter/setter方法(getter/setter自身除外),以備日後更改代碼。

編輯:

@Vanthel:下劃線是純粹的約定。如果沒有@synthesize(或@synthesize foo),編譯器會爲foo屬性生成變量_foo。但是,通過@synthesize foo = my_bar,您可以指定變量my_barfoo的訪問者訪問。

+0

您能否在單獨的段落中說明使用下劃線前綴? – amcc

相關問題