2011-10-12 41 views
5

在Xcode 4.2,我發現這非常令人沮喪,因爲你不能使用:你如何在xcode 4.2中釋放內存?

-(void)dealloc { 
[label release]; //'release' is unavailable 
[super dealloc]; //'dealloc' is forbidden in automatic reference counting 
} 

是否有因爲自動釋放等deallocs不正常工作或另一種方式。

+0

......你沒有。除非你的項目使用手動內存管理。 – JoePasq

+0

所以即使我沒有釋放內存,我也不會收到內存警告? – iphonemaniac

+0

我不能說我的頭頂。檢查文檔,我不認爲記憶警告已經消失,尤其是iPhone 3GS仍在市場上。 – JoePasq

回答

9

Xcode 4.2引入了「自動引用計數」(aka ARC)。這是一個編譯器功能,基本上爲您插入保留和釋放調用。在ARC下,如果你有一個指向對象的指針,你會保留它。當指針超出範圍或被重新分配指向另一個對象時,原始對象將被釋放。這太好了。

因此,簡而言之,你只是刪除所有來電retainreleaseautorelease,編譯器會做正確的事情你。

+0

太棒了! – iphonemaniac

1

閱讀自動引用計數。如果您正確編寫代碼,則不需要再執行任何操作。

如果您想在不轉換的情況下使用舊代碼,請禁用ARC。將-fno-objc-arc放在您不想使用ARC的任何源模塊的編譯器標誌中。

joe

+0

如何正確編寫代碼 – iphonemaniac

+0

如果我沒有釋放內存,會否影響? – iphonemaniac

+0

不,它不會 – iphonemaniac