2011-10-02 59 views
0

我的应用程序中有几个选项卡。目前我正面临一个问题,即当内存不足时我的页面会被卸载(特别是如果我在我的应用程序中显示相机)。如何在应用程序处于活动状态时阻止页面卸载

有没有办法缓解这种情况并防止发生卸货?或者是否有任何方法来拦截卸载过程,以便可以完成某些操作而不是允许卸载页面?

回答

1

你不应该阻止视图卸载,如果应用程序内存不足,它必须释放内存,否则你的应用程序将简单地被系统杀死。你应该尽可能地清理尽可能多的内存以及视图。

此外,视图仅用于显示数据,如果视图被卸载,它只是在一个特定的情况下:存在内存警告并且视图没有超级视图(对用户不可见)。如果它对用户不可见,则在内存不足时保持它不变是毫无意义的。如果你是在这些视图中存储 [重要]数据,你做错了。数据模型应保存在控制器中。

-1

当内存变低时,所有视图控制器都会调用它们的委托方法:didReceiveMemoryWarning。

UIViewController的默认实现是卸载视图。

所以,你需要以覆盖此行为做的是覆盖的方法:

- (void)didReceiveMemoryWarning 
{ 
    //[super didReceiveMemoryWarning]; - calling this will unload the view 

    // Relinquish ownership any cached data, images, etc that aren't in use. 
} 
+0

很可能引发崩溃与停止该应用在这样的警告释放内存。 – tobiasbayer

+0

大多数应用程序都有很多viewControllers。你当然应该让iOS在你的应用程序中卸载大部分viewController。但是在某些情况下(并不是很少见),你有几个viewController你不想被卸载。对于那些viewControllers你可以使用这个方法。 – adamsiton

相关问题