我有一個應用程序,其中用戶可以推無限深入到次(推到NAV棧)。在某個時候,會有記憶警告。我想從導航控制器中刪除視圖控制器並釋放它們。如果用戶返回到這些視圖控制器,我想重新創建視圖控制器並將它們推回到堆棧中的正確位置。用於uinavigationcontroller的iOS開源智能控制器推/彈出庫?
這是要思考這個問題的正確方法?
有沒有做這個工作的一個開源項目?這似乎不是一個罕見的問題,我寧可不重新發明輪子。
我有一個應用程序,其中用戶可以推無限深入到次(推到NAV棧)。在某個時候,會有記憶警告。我想從導航控制器中刪除視圖控制器並釋放它們。如果用戶返回到這些視圖控制器,我想重新創建視圖控制器並將它們推回到堆棧中的正確位置。用於uinavigationcontroller的iOS開源智能控制器推/彈出庫?
這是要思考這個問題的正確方法?
有沒有做這個工作的一個開源項目?這似乎不是一個罕見的問題,我寧可不重新發明輪子。
有一段時間,您需要確保viewDidLoad
和viewDidUnload
的呼叫正確匹配,以便可以通過這種方式處理內存警告。從iOS 6開始,這不再是必要的。
,因爲它說的viewDidUnload
文檔中:
在iOS 5及更早的時候,一個內存過低的情況發生,也沒有必要的 當前視圖控制器的看法,該系統可以選擇 調用這個方法在視圖控制器的視圖之後已經發布了 。此方法是您執行任何最終清理的機會。如果您 視圖控制器存儲到視圖或其子視圖 單獨引用,你可以用這個方法來釋放這些引用。您 也可以使用此方法來刪除對 創建支持這樣的觀點,但現在 的觀點走了那些不再需要的所有對象的引用。您不會使用此方法來釋放用戶數據 或任何其他無法輕鬆重新創建的信息。
在iOS 6中和後,在 視圖控制器清除到視圖和其他對象的引用是不必要的。
如果手動保存在內存中大的物體,如圖像或視頻數據,那麼你就可以覆蓋didReceiveMemoryWarning
在必要時釋放這些對象。