2012-12-10 64 views
0

我有一個UIViewControllers目前的堆棧,每個都是一個模式ViewController提出了上一個。我的問題是我不需要一堆UIViewControllers,我只需要最後一個。所以當一個新的UIViewControllers呈現時,其父應該被清除,完全從內存中刪除。我的應用永遠不會再需要這些視圖控制器。清除UIViewController

我已閱讀本:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html

但這種模式只與內存釋放,如果應用程序得到一個內存警告問津。並不清除viewcontrollers,只是他們的內容。我想以更手動的方式來做...這是可能的,或者這在iOS中不是常見的做法,我應該只依靠內存警告消息。

回答

1

最簡單的方法是避免首先創建堆棧。不要用現有的控制器來提供新的模態控制器,而要讓你的根控制器先消除現有的控制器,並提出每個新控制器。

+0

這是正確的,可能是完美的解決方案:) –

0

我可能找到了一個很好的解決方案。應該使用UINavigationController,並手動管理其viewContollers屬性(這是UIViewControllers的堆棧)。加載新UIViewController之後(或之前),您可以從堆棧中刪除舊的UIViewController,從而從內存中清除它。

這篇文章幫助: How can I pop a view from a UINavigationController and replace it with another in one operation?

這種方式可以使程序流程,只有當UIViewController的是在時間的記憶,你替換它們,當你需要一個新的UIViewController。

+0

如果你不需要他們是模態,這絕對是一種方式。 (即使問題**確實**說'模態':)) –