如何在应用程序处于活动状态时阻止页面卸载
问题描述:
我的应用程序中有几个选项卡。目前我正面临一个问题,即当内存不足时我的页面会被卸载(特别是如果我在我的应用程序中显示相机)。如何在应用程序处于活动状态时阻止页面卸载
有没有办法缓解这种情况并防止发生卸货?或者是否有任何方法来拦截卸载过程,以便可以完成某些操作而不是允许卸载页面?
答
你不应该阻止视图卸载,如果应用程序内存不足,它必须释放内存,否则你的应用程序将简单地被系统杀死。你应该尽可能地清理尽可能多的内存以及视图。
此外,视图仅用于显示数据,如果视图被卸载,它只是在一个特定的情况下:存在内存警告并且视图没有超级视图(对用户不可见)。如果它对用户不可见,则在内存不足时保持它不变是毫无意义的。如果你是在这些视图中存储 [重要]数据,你做错了。数据模型应保存在控制器中。
答
当内存变低时,所有视图控制器都会调用它们的委托方法:didReceiveMemoryWarning。
UIViewController的默认实现是卸载视图。
所以,你需要以覆盖此行为做的是覆盖的方法:
- (void)didReceiveMemoryWarning
{
//[super didReceiveMemoryWarning]; - calling this will unload the view
// Relinquish ownership any cached data, images, etc that aren't in use.
}
很可能引发崩溃与停止该应用在这样的警告释放内存。 – tobiasbayer
大多数应用程序都有很多viewControllers。你当然应该让iOS在你的应用程序中卸载大部分viewController。但是在某些情况下(并不是很少见),你有几个viewController你不想被卸载。对于那些viewControllers你可以使用这个方法。 – adamsiton