3

请帮忙,我不知道我与 didReceiveMemoryWarning 到底有什么关系。我的应用程序启动良好,但是当运行的后台应用程序过多时,它会收到内存警告并退出。我只想显示一个警报,要求用户退出一些后台应用程序。

我有一个 appDelegate,在它的窗口中有一个我的 viewController 的视图,它有另一个视图分配(复合)有两个子视图(一个 XIB 在一个 OpenGL 视图上),这被设置为 viewController 中的一个 cameraOverlayView。

我试图在警告时将所有内容合二为一,但仍然退出。我必须在每个子视图中实现 didReceiveMemoryWarning 吗?我可以以某种方式“强制退出”初始化过程吗?

4

1 回答 1

2

如果您的应用程序在它处于活动状态时被终止,那么您可能有内存泄漏导致您的应用程序消耗大量内存。

当操作系统开始耗尽内存时,它将首先从内存最密集的应用程序开始终止后台任务,然后最终终止最前面的应用程序。用户永远不需要手动终止后台应用程序以节省内存。这一切都是自动完成的。

如果您的应用程序在后台,那么它可以随时终止。您能做的最好的事情就是减少整体内存使用量,并希望操作系统在您之前杀死其他一些内存密集型应用程序。

didReceiveMemoryWarning通常是您释放任何缓存数据的地方,您必须尝试减少应用程序的占用空间。应用程序中视图当前不可见的任何视图控制器都将被卸载并viewDidUnload调用该方法。这是您应该将任何IBOutlet属性设置为 nil 的地方。

但是,如果您的应用程序在它处于活动状态时被终止,您应该使用 Instruments 中的 Leaks 工具来确保您没有任何泄漏并且您没有消耗异常大量的内存。

于 2010-07-30T09:34:48.927 回答