當我申報@property
時,很明顯我想稍後使用它。由於某些原因,聲明@property
是不夠的,我必須告訴編譯器@synthetize
它在每個.m
文件中。因此,我的項目中的每個.m
文件都以@synthetize
開頭。爲什麼@synthetize必須手動添加?
爲什麼他們沒有用C#的方式做到這一點,只要聲明足夠了,編譯器就可以完成剩下的工作?
當我申報@property
時,很明顯我想稍後使用它。由於某些原因,聲明@property
是不夠的,我必須告訴編譯器@synthetize
它在每個.m
文件中。因此,我的項目中的每個.m
文件都以@synthetize
開頭。爲什麼@synthetize必須手動添加?
爲什麼他們沒有用C#的方式做到這一點,只要聲明足夠了,編譯器就可以完成剩下的工作?
通過使@synthesize
成爲可選項,您可以自由地以您選擇的任何方式實現您的getter和setter方法。
您可以在Apple的Declared Properties文檔中找到更多信息,尤其是標題爲「屬性實現指令」的部分。
雖然明智地實現了getter和/或setter,或者指定了「@ dynamic」,但是不能將@ @ synthesize作爲默認值。 – yuji 2012-04-01 20:23:01
IIRC如果您使用'@ synthesize'並仍然實現getter和/或setter,則將使用您實現的那個。這對於合成一個吸氣器並提供一個自定義設置器很有用。但是它並沒有幫助解釋爲什麼'@ synthesize'必須一直手動寫入;) – Taum 2012-04-01 20:23:14
是的,是什麼原因不選擇@synthetize的默認實現可以被用戶覆蓋? – 2012-04-01 20:48:18
您幾乎可以免費獲得標準Accessors,並且可以根據需要推出自己的Getters/Setter。
AppCode可以做到這一點。 Xcode不能默認。 – beryllium 2012-04-01 20:17:24
你是指JetBrains的IDE嗎? – 2012-04-01 20:19:45
是的,我願意。 (還有一些角色可以在評論中達到15個符號:) – beryllium 2012-04-01 20:23:41