0

我目前有一堆 UIViewController,每个都是在前一个之上呈现的模态 ViewController。我的问题是我不需要一堆 UIViewControllers,我只需要最后一个。所以当一个新的 UIViewControllersis 出现时,它的父级应该被清除,从内存中完全删除。我的应用程序再也不需要那些视图控制器了。

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

但是这种模式只在应用程序收到内存警告时才关心内存释放。并且不会清除视图控制器,只会清除它们的内容。我想以更手动的方式来做......这可能吗,或者这不是iOS中的常见做法,我应该只依赖内存警告消息。

4

2 回答 2

1

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

于 2012-12-10T12:45:23.757 回答
0

我可能已经找到了一个不错的解决方案。应该使用 UINavigationController,并手动管理其 viewContollers 属性(即 UIViewController 的堆栈)。在加载新的 UIViewController 之后(或之前),您可以从堆栈中删除旧的 UIViewController,从而将其从内存中清除。

这篇文章有帮助: 如何从 UINavigationController 弹出视图并在一次操作中将其替换为另一个视图?

这样你就可以创建一个程序流,只有当 UIViewController 一次在内存中时,当你需要一个新的 UIViewController 时替换它们。

于 2012-12-10T14:33:55.327 回答