如何卸载UIViewController的视图?

5
我有一个自定义控件,类似于选项卡,可以显示许多控制器,其中一些控制器也具有我的选项卡和其他控制器,因此,我的应用程序使用了大量内存,因为每个控制器都存储在内存中。所以我想卸载不可见的控制器,但是我没有找到任何卸载UIViewController的方法。我该怎么做?
PS. 我不能使用UITabBarController,真的不行。
3个回答

1

我知道这是一个旧的帖子,但可能对某些人有用。

您可以通过调用以下方法卸载视图控制器的视图:

[viewControllerWhoseViewYouWantToUnload didReceiveMemoryWarning];

1

从其父视图中删除视图控制器的视图并释放控制器。工作完成。


这不太合适,我需要保留控制器数据 - 控制器从互联网数据中加载,如果每次都要加载,用户会期望。重新制作一个更MVC版本的,我不能让应用程序太大。 - Tesseract
在这种情况下,当传递didReceiveMemoryWarning时,视图会自动卸载,但是您现在应该清理viewDidUnload中将在viewDidLoad中重新创建的任何内容。 - Simon Lee

1

UIViewControllers不会在内存紧张时被卸载,只有它们的视图会被卸载。

这是在您自己的视图控制器的didReceiveMemoryWarning方法中发生的,并且会在发生低内存警告时自动调用。

重写此方法并卸载任何可以在viewDidLoad方法中重新创建的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接