2010-02-17 62 views

回答

2

好第一關,你可能想釋放viewDidDisappear:事情(後他們關閉屏幕),而不是viewWillDisappear:在任何情況下,你應該釋放它在這兩個viewDidDisappear:dealloc ...

viewDidDisappear:你應該釋放您在屏幕外不需要的任何東西,以節省內存。在dealloc你應該釋放你的對象可能保留的所有東西。無論您是否可能將其釋放到viewDidDisappear:中,以防您的代碼通過未調用viewDidDisappear:的奇怪路徑輸入,您都希望這樣做。未來,當您在不同的環境中重用視圖控制器時,或者Apple改變了您所在的VC收藏視圖控制器的某些內容時,可能會發生這種情況。

只要適當地刪除ivars在你釋放它們之後(如果你正在使用屬性,應該會自動發生),那麼過度釋放不會是一個問題,因爲如果你在兩個地方釋放它,第二個版本將最終將釋放消息發送到nil。

+0

viewDidUnload呢? – willcodejavaforfood

+0

一些資源也適合在那裏發佈,這取決於你在做什麼。關鍵在於無論您是否可以在VC運行時釋放對象來響應內存壓力或事件,您都應確保VC可能保留的任何對象在dealloc中釋放。 –

+0

很好的回答!謝謝! –

相關問題