我正在學習iPhone開發。在書中的例子中,提到了@synthesize關鍵字的屬性。iPhone Dev - @synthesize關鍵字?
對於控件,我在.h文件中定義屬性,但在.m文件中不定義@synthesize。我使用.text屬性訪問文本框的屬性。 另外我有一個文本框的鏈接,文本框的名稱與屬性名稱不同。
而且代碼運行良好;那麼@synthesize關鍵字不需要?什麼時候?
我正在學習iPhone開發。在書中的例子中,提到了@synthesize關鍵字的屬性。iPhone Dev - @synthesize關鍵字?
對於控件,我在.h文件中定義屬性,但在.m文件中不定義@synthesize。我使用.text屬性訪問文本框的屬性。 另外我有一個文本框的鏈接,文本框的名稱與屬性名稱不同。
而且代碼運行良好;那麼@synthesize關鍵字不需要?什麼時候?
從蘋果的文檔> Mac開發中心>可可核心競爭力>聲明的屬性:
除了聲明存取 方法,你可以指示編譯 合成它們 的實現(或通知編譯器,你的 類將在 運行時合成它們)。
你使用@synthesize聲明在 類的實現塊告訴 編譯器創建符合您的財產申報給 的規範,實現 。
供參考:
您使用@dynamic語句來告訴 編譯器禁止如果 無法找到由 @property聲明中指定 訪問方法的實現警告。
@synthesize指令控制訪問器方法的創建。但是,嚴格來說,您不必使用訪問器方法,它們就是這樣一個非常好的主意,它可以讓編譯器自動生成它們。
訪問器方法對變量進行了精細調整,並且使鍵值編碼更容易。
在Objective-c 2.0之前,您必須手動編寫訪問器。這意味着要爲每個變量寫兩個方法。這很乏味,很多人用腳本來做。當他們更新語言時,他們只包含這些腳本。 @property,@synthesize和@dynamic編譯器指令激活這些腳本。
好吧,但似乎我沒有完成 – 2009-12-08 14:30:00
@paul simmons然後,屬性聲明的(可能的情況下)方法在m文件中實現,或者編譯器警告你 – justin 2009-12-08 19:25:00
啊,這只是一個警告?不是錯誤? – 2009-12-10 15:25:36