2012-04-01 123 views
1

當我申報@property時,很明顯我想稍後使用它。由於某些原因,聲明@property是不夠的,我必須告訴編譯器@synthetize它在每個.m文件中。因此,我的項目中的每個.m文件都以@synthetize開頭。爲什麼@synthetize必須手動添加?

爲什麼他們沒有用C#的方式做到這一點,只要聲明足夠了,編譯器就可以完成剩下的工作?

+0

AppCode可以做到這一點。 Xcode不能默認。 – beryllium 2012-04-01 20:17:24

+0

你是指JetBrains的IDE嗎? – 2012-04-01 20:19:45

+0

是的,我願意。 (還有一些角色可以在評論中達到15個符號:) – beryllium 2012-04-01 20:23:41

回答

4

通過使@synthesize成爲可選項,您可以自由地以您選擇的任何方式實現您的getter和setter方法。

您可以在Apple的Declared Properties文檔中找到更多信息,尤其是標題爲「屬性實現指令」的部分。

+1

雖然明智地實現了getter和/或setter,或者指定了「@ dynamic」,但是不能將@ @ synthesize作爲默認值。 – yuji 2012-04-01 20:23:01

+0

IIRC如果您使用'@ synthesize'並仍然實現getter和/或setter,則將使用您實現的那個。這對於合成一個吸氣器並提供一個自定義設置器很有用。但是它並沒有幫助解釋爲什麼'@ synthesize'必須一直手動寫入;) – Taum 2012-04-01 20:23:14

+0

是的,是什麼原因不選擇@synthetize的默認實現可以被用戶覆蓋? – 2012-04-01 20:48:18

0

您幾乎可以免費獲得標準Accessors,並且可以根據需要推出自己的Getters/Setter。

相關問題