2012-09-02 32 views
3

當我查看iOS 5開發人員庫時,它說我必須爲每個創建的變量包含訪問器方法。然而,當我輸入Xcode中的Getters和Setter沒有問題

@property (weak, nonatomic) NSString *userName; 

但是,我沒有看到任何錯誤說我需要「getters」和「setters」。難道我做錯了什麼?

回答

2

您不會收到有關需要「getters」和「setters」的消息,因爲當編譯器「合成」該屬性時,會爲您創建這些訪問器方法。你不必擔心他們。當編譯器遇到@synthesize指令(並且在Xcode 4.4中,即使不再需要),您的訪問器方法也會爲您創建。

這在蘋果的The Objective-C Programming Language的聲明屬性部分討論。另外,當你說你看到有關「你必須包含每個變量的訪問器方法」的事實時,我假設你正在討論在特定上下文中這是必需的。它當然不是iOS應用程序中所有變量的一般要求。有時候他們很有用。還有一些iOS功能需要它們。但這不是一個普遍的規則。

2

在Xcode 4.4的一個新特性就是它,如果你不自己動手提到here自動合成屬性:

編譯器會自動默認爲未實現@properties @synthesize調用。

+1

詳細地說,它被添加爲'@synthesize userName = _userName;'所以你也可以直接訪問它。 – Bastian

+0

所以我應該自己實施「setters」和「getters」嗎? – Anonymous181

+0

合成屬性('@synthesize userName;')是可選的,所以你我更願意寫更少的代碼。至於自己實現getter和setter方法(' - (String *)userName ...'),除非你想在它們中做更多的進程,否則也是不必要的。 – sch