2011-09-06 65 views
13

我知道@synthesize已經大大減少了我寫作getter和setter的工作。但是,一個普通的程序我經常要使用的都是這4個步驟,例如有沒有更快的方法來做@property,@synthesize和釋放一個類變量?

  1. SomeView *abc;
  2. @property(nonatomic,retain)SomeView *abc;
  3. @synthesize abc;
  4. [abc release];

已經有人想出了在那裏我寫的任何想法SomeView *abc;在.h和步驟2,3,4自動生成?

+1

坦率地說,我認爲它不會比這更好!這很方便。 – Trevor

+5

那麼,首先,你實際上並不需要第1步 - 「@synthesize abc;'爲你照顧。或者我所做的是'@syntheisze abc = _abc;'以便該屬性不會與實例變量混淆。 –

+1

希望XCode能爲此提供一個捷徑;如果你有大量的變量需要用相似的模式創建,這會讓你有點惱火 – Manny

回答

4

如果是IBOutlet,當您使用IB創建變量時,Xcode將爲您編寫所有代碼。您只需將要在界面編輯器中引用的對象拖動到您想要屬性聲明的頭文件中的位置,填寫表單並點擊確定。

正如其他人所提到的,你可以跳過聲明支持伊娃,贊成讓@synthesize爲你生成。

您可以使用適當的編譯器標誌跳過@synthesize。在網上搜索「default @synthesize」之類的東西。

跳過-dealloc的一種方法是使用Obj-C關聯的對象API將對象擺脫主對象。當與其關聯的對象被釋放時,保留的關聯對象將被釋放。

然後就有自動引用計數(ARC),它可以更加乾淨利落地清除-dealloc

+0

自動@synthesize尚不可用。 – Abizern

+0

後面的部分對我來說是新的,謝謝你的信息,將會研究這個..建議使用1)使用適當的編譯器標誌跳過@synthesize和2)通過關聯/ ARC跳過-dealloc?我的意思是開發人員實際使用並比平常更喜歡這個嗎? – Manny

+0

顯然,添加了對默認'@ synthesize'的支持,然後快速刪除。我希望這個功能在恢復時會被廣泛使用。通過關聯方式跳過'-dealloc'是不常見的,但是可行的。一旦Apple發佈捆綁支持ARC的編譯器的Xcode版本,通過ARC跳過它將成爲SOP。 –

5

跳過第一步,沒有必要,@synthesize會創建伊娃。

+1

這意味着我只能減少25%的工作。謝謝。 – Pradhan

+0

歡迎來到Objective-C! – WrightsCS

1

這並不是很多的幫助,但我做的一件事是將dealloc移到實現的頂部,在其他方法之前。 @synthesize語句就在上面,所以你可以放入@synthesize和release,而不必滾動。在編碼時它並不是一個非常節省時間的工具,但它確實可以幫助您將兩個部分保持同步,這在調試時節省時間。

1

這並不是件壞事。在一些情況下,它已經爲你完成了:

在Xcode 4的Interface Builder中,當你將一個元素拖到它的文件的所有者的.h文件時,它會爲你做這個1-4,甚至將它設置爲你的viewDidUnload

  1. 現代運行時不需要。
  2. 仍然需要這樣做。
  3. 在WWDC10(113和144)會議上討論了這個問題,但發行說明說這還沒有發生。
  4. 使用ARC,你不需要這個。

這是你不需要做的四件事中的兩件,以及他們正在努力去除的一件。所以它還不是全部 - 但它變得越來越簡單。

相關問題