清除UIViewController

时间:2012-12-10 12:21:57

标签: ios memory uiviewcontroller didreceivememorywarning purge

我目前有一堆UIViewControllers,每个都是一个模型ViewController,呈现在前一个。我的问题是我不需要一堆UIViewControllers,我只需要最后一个。因此,当呈现新的UIViewControllers时,应该清除其父级,从内存中完全删除它。我的应用程序永远不会再需要那些viewcontrollers。

我读过这个:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html

但是,如果应用程序收到内存警告,此模式仅关注内存释放。并且不会清除viewcontrollers,只清除它们的内容。我想以更加手动的方式进行...这是可能的,或者它不是iOS中的常见做法,我应该只依赖于内存警告消息。

2 个答案:

答案 0 :(得分:1)

最简单的方法是避免首先创建堆栈。不要在现有模式控制器上面显示新的模态控制器,而是让根控制器首先关闭现有模态控制器并呈现每个新模态控制器。

答案 1 :(得分: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时替换它们。