從Apple的View Controller編程指南/高效管理內存;didReceiveMemoryWarning和viewDidUnload
didReceiveMemoryWarning
使用此方法來取消分配與您的視圖控制器相關聯的所有非關鍵的自定義數據結構。雖然您不會使用此方法來釋放對視圖對象的引用,但您可以使用它來釋放您尚未在viewDidUnload方法中釋放的任何與視圖相關的數據結構。 (視圖對象本身應始終在viewDidUnload方法被釋放。)
viewDidUnload
可以使用viewDidUnload方法來解除對其的看法,具體的,可重新如果很輕鬆了任何數據視圖再次加載到內存中。但是,如果重新創建數據可能太耗時,則不必在此處釋放相應的數據對象。相反,您應該考慮在您的didReceiveMemoryWarning方法中釋放這些對象。
對於didReceiveMemoryWarning,我們建議取消分配非關鍵數據結構。那麼,什麼是關鍵,什麼是非關鍵?
此外,它說,釋放我們尚未在viewDidUnload釋放。 但是,當有內存警告didReceiveMemoryWarning被調用和視圖可以被卸載,然後調用viewDidUnload。那麼,它是在談論將這些代碼移動到前一個事件的方法(didReceiveMemoryWarning)還是我錯過了關於事件順序的事情?
對於viewDidUnload,我們建議關心容易重新加載視圖時重新創建數據。 因此,如果某個視圖正在使用且無法卸載,那麼爲什麼我們會在didReceiveMemoryWarning中釋放耗時的數據?在這些數據發佈之後,當用戶嘗試在當前視圖內執行某些操作時,加載它們也將非常耗時。所有的
正如你指出的那樣,他們稱之爲對應物,但沒有記憶警告就不叫它。 – lockedscope 2010-12-04 16:17:59