有時在Objective-C中爲iPhone編碼時,我想知道是否應該在dealloc中釋放對象,或者如果該視圖是應用程序中很少使用的單獨部分,那麼在viewWillDisappear中發佈時有時會更好。什麼時候應該在dealloc中釋放一個對象?
謝謝。
有時在Objective-C中爲iPhone編碼時,我想知道是否應該在dealloc中釋放對象,或者如果該視圖是應用程序中很少使用的單獨部分,那麼在viewWillDisappear中發佈時有時會更好。什麼時候應該在dealloc中釋放一個對象?
謝謝。
好第一關,你可能想釋放viewDidDisappear:
事情(後他們關閉屏幕),而不是viewWillDisappear:
在任何情況下,你應該釋放它在這兩個viewDidDisappear:
和dealloc
...
在viewDidDisappear:
你應該釋放您在屏幕外不需要的任何東西,以節省內存。在dealloc
你應該釋放你的對象可能保留的所有東西。無論您是否可能將其釋放到viewDidDisappear:
中,以防您的代碼通過未調用viewDidDisappear:
的奇怪路徑輸入,您都希望這樣做。未來,當您在不同的環境中重用視圖控制器時,或者Apple改變了您所在的VC收藏視圖控制器的某些內容時,可能會發生這種情況。
只要適當地刪除ivars在你釋放它們之後(如果你正在使用屬性,應該會自動發生),那麼過度釋放不會是一個問題,因爲如果你在兩個地方釋放它,第二個版本將最終將釋放消息發送到nil。
viewDidUnload呢? – willcodejavaforfood
一些資源也適合在那裏發佈,這取決於你在做什麼。關鍵在於無論您是否可以在VC運行時釋放對象來響應內存壓力或事件,您都應確保VC可能保留的任何對象在dealloc中釋放。 –
很好的回答!謝謝! –