2014-06-23 50 views
2

我有一個應用程序,其中用戶可以推無限深入到次(推到NAV棧)。在某個時候,會有記憶警告。我想從導航控制器中刪除視圖控制器並釋放它們。如果用戶返回到這些視圖控制器,我想重新創建視圖控制器並將它們推回到堆棧中的正確位置。用於uinavigationcontroller的iOS開源智能控制器推/彈出庫?

這是要思考這個問題的正確方法?

有沒有做這個工作的一個開源項目?這似乎不是一個罕見的問題,我寧可不重新發明輪子。

回答

2

有一段時間,您需要確保viewDidLoadviewDidUnload的呼叫正確匹配,以便可以通過這種方式處理內存警告。從iOS 6開始,這不再是必要的。

,因爲它說的viewDidUnload文檔中:

在iOS 5及更早的時候,一個內存過低的情況發生,也沒有必要的 當前視圖控制器的看法,該系統可以選擇 調用這個方法在視圖控制器的視圖之後已經發布了 。此方法是您執行任何最終清理的機會。如果您 視圖控制器存儲到視圖或其子視圖 單獨引用,你可以用這個方法來釋放這些引用。您 也可以使用此方法來刪除對 創建支持這樣的觀點,但現在 的觀點走了那些不再需要的所有對象的引用。您不會使用此方法來釋放用戶數據 或任何其他無法輕鬆重新創建的信息。

在iOS 6中和後,在 視圖控制器清除到視圖和其他對象的引用是不必要的。

如果手動保存在內存中大的物體,如圖像或視頻數據,那麼你就可以覆蓋didReceiveMemoryWarning在必要時釋放這些對象。

相關問題