2009-12-08 21 views
2

我正在學習iPhone開發。在書中的例子中,提到了@synthesize關鍵字的屬性。iPhone Dev - @synthesize關鍵字?

對於控件,我在.h文件中定義屬性,但在.m文件中不定義@synthesize。我使用.text屬性訪問文本框的屬性。 另外我有一個文本框的鏈接,文本框的名稱與屬性名稱不同。

而且代碼運行良好;那麼@synthesize關鍵字不需要?什麼時候?

回答

4

從蘋果的文檔> Mac開發中心>可可核心競爭力>聲明的屬性:

除了聲明存取 方法,你可以指示編譯 合成它們 的實現(或通知編譯器,你的 類將在 運行時合成它們)。

你使用@synthesize聲明在 類的實現塊告訴 編譯器創建符合您的財產申報給 的規範,實現 。

供參考:

您使用@dynamic語句來告訴 編譯器禁止如果 無法找到由 @property聲明中指定 訪問方法的實現警告。

+0

好吧,但似乎我沒有完成 – 2009-12-08 14:30:00

+0

@paul simmons然後,屬性聲明的(可能的情況下)方法在m文件中實現,或者編譯器警告你 – justin 2009-12-08 19:25:00

+0

啊,這只是一個警告?不是錯誤? – 2009-12-10 15:25:36

3

@synthesize指令控制訪問器方法的創建。但是,嚴格來說,您不必使用訪問器方法,它們就是這樣一個非常好的主意,它可以讓編譯器自動生成它們。

訪問器方法對變量進行了精細調整,並且使鍵值編碼更容易。

在Objective-c 2.0之前,您必須手動編寫訪問器。這意味着要爲每個變量寫兩個方法。這很乏味,很多人用腳本來做。當他們更新語言時,他們只包含這些腳本。 @property,@synthesize和@dynamic編譯器指令激活這些腳本。