2013-05-17 70 views
1

我正嘗試使用ARC釋放內存。但其不起作用。如何使用ARC釋放內存

xmlData=nil; //NSMutableDataObject 
nsurlobject=nil; //NSUrl object 
urlrequest=nil; //NSMutableRequest Object 
connection=nil; //NSurlConnection Object 

當我在Instruments上檢查時,它顯示相同的內存。

請告訴我我哪裏錯了? 謝謝

+2

對象是如何定義的,還有其他什麼東西保留它們? – Wain

+0

在ARC中,設置爲nil只會清空對象。編譯器負責解除分配的對象。所以你不必擔心 –

+0

如果你在一個循環中通過簡便的方法創建內存激烈的對象(例如'imageNamed:'),你應該用'@ autoreleasepool'環繞你的循環。即使使用弧線。 – mAu

回答

1

用於自動引用計數的ARC支架,當您在項目中使用ARC時,不需要手動釋放內存。 Xcode將檢測分配對象的作業何時完成並釋放它們本身。

您不必擔心自己釋放對象。

+1

然而,如果你想讓對象更快地被ARC釋放,把它們設置爲'nil'可以加快ARC的速度......但除非你使用大量的內存,否則它並不是真的必要。 –

+0

@DownVoter:你能否詳細說明你的倒票? 這將有利於任何其他人尋找同樣的問題,也可以幫助我理清我的概念。 – Shailesh

+0

我不負責downvote,但這個答案有點簡短的一面,並可能混淆。是的,在ARC下,你不再需要自己手動釋放對象,但它並不像「Xcode將檢測到分配對象的工作完成」那樣簡單。你必須確保你得到'生命週期限定符'正確,並在適當的時候將參數設置爲零。可能最好引用[過渡到弧文檔](http://developer.apple.com/library/mac/#releasenotes /ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html) –