2011-03-22 14 views
6

我已經從過去的1-2個月,所有的時間開發iPhone採取IBOutlet中我用下面的方法來聲明任何屬性:的XCode iPhone自動財產,綜合和delloc

在.h文件:

@interface .... 
{ 
    controlType varName; 
} 

@property() IBOutlet controlType varName; 

在.m文件:

在頂部 -

@synthesize varName;

in delloc method - [varName release];

儘管該方法是好的,但是當它以一對夫婦·其不是很好f分鐘只是爲了聲明財產。

是否有任何聲明屬性,IBOutlets,IBActions或基本數據變量的自動過程。

我希望在這種情況下應該有一些自動方法,因爲這是一個非常基本的過程。

謝謝大家。

+0

你忘了'self.varName =零;'在viewDidUnload ;-) – 2011-03-22 09:38:31

+0

我從來沒有這樣做.. :( 我沒有遇到任何問題,這是什麼self.varName =零做 – necixy 2011-03-22 12:24:02

回答

4

其實是的!

您不再需要聲明實際的iVar。

總之,簡單地省略這部分:controlType varName;

現在,您仍然需要明確「合成」。

(據我所看到的,他們可能自動化,在未來,但現在你要「綜合」創建setter和getter。)

你還是要釋放內存 - 真的沒有辦法自動化,因爲內存處理是「真正的男人編程」。

對於任何新的密友閱讀,不要忘記「自我」。部分使用該屬性時。

另外請注意,XCode4甚至有一個新的自動thingy。 只需從界面構建器拖動到.h文件,它就會爲您做所有事情 - 試試吧!


在回答你的問題suplementary:一個IBOutlet不需要特別是財產 - 你可以使用普通的便宜的伊娃。另一方面,如果你願意,你可以使用一個屬性。此外:你甚至可以使用新的伎倆(2011年)不費吹灰之力宣佈伊娃,只是使用財產聲明,並推出一個IBOutlet在那裏!

+0

感謝隊友, 還有幾件事我腦海中浮現的是屬性和類變量之間有什麼區別? 它們如何不同? 我們是否需要爲每個IBOutlet或任何數據成員聲明屬性array? – necixy 2011-03-23 12:14:20

0

您可以通過更改屬性聲明來節省自己釋放對象的空間。如果您使用:

@property (assign) IBOutlet controlType varName; 

保留將不會在您的視圖上調用,所以你不必在稍後發佈它。這通常是安全的,因爲視圖在添加到父級時會保留。如果您出於某種原因從父母移除視圖,那麼您將不得不保留這些視圖。

+0

我發現刪除在IB中創建的視圖是非常罕見的,通常我只是將視圖設置爲隱藏,而不是刪除它們並重新添加它們,而且如果您忘記了某些東西,通常會導致崩潰作爲操作構成泄漏,我發現更容易處理。 – skorulis 2011-03-22 23:06:49

+0

如果您正在進行協作開發,這聽起來像是一個不好的習慣。我更喜歡XCode 4.x中的新功能,並希望Apple繼續改進與Eclipse,InteliJ等競爭的工具。 – mobibob 2011-07-15 21:38:30

0

Here's一個xcode腳本,用於自動執行聲明屬性的繁瑣操作。

+0

這不適用於Xcode 4 – 2011-08-04 03:33:08

8

另一個並不是很多人都知道的是,你可以從Interface Builder拖到你的頭文件來創建IBActions或IBOutlets。

注意:打開助手編輯器,重點關注IB內部的XIB。

如果您以這種方式創建您的IBOutlets,Xcode會自動添加屬性,將其合成,並將其設置爲零,然後將其在dealloc中釋放。

您只需將IB對象拖到頭文件中,就如同在創建視圖對象和它們的文件所有者之間的連接時一樣(截圖如下)。 enter image description here

+0

這是否適用於XCode 4.0之前的版本? – necixy 2011-03-22 12:40:36

+0

不適用於我的XCode 3.2.3。 :( – necixy 2011-03-22 12:42:02

2

有一個很棒的工具可以加速整個過程:accessorizer

你寫controlType varName;選擇它並按下一些按鈕,訪問器將爲你創建屬性,init,dealloc,viewDidUnload等等。您只需將代碼粘貼到您的項目中。

試試吧,演示可用。

+0

感謝您指出這個偉大的工具。在我看來,這應該是答案。 – 2012-03-18 03:07:43