请帮助,我不知道我与didReceiveMemoryWarning完全一致。我的应用程序启动良好,但是当运行的后台应用程序太多时,它会收到内存警告,然后退出。 我只是想显示一条警告,要求用户退出一些后台应用。
我有一个appDelegate,在它的窗口中有一个viewController的视图,它有另一个视图分配(复合)有两个子视图(在OpenGL视图上的XIB),并且这被设置为viewController中的cameraOverlayView
我试图在警告中释放所有内容,但仍然退出。我是否必须在每个子视图中实现didReceiveMemoryWarning?我可以以某种方式“强制”初始化过程吗?
答案 0 :(得分:2)
如果您的应用在处于活动状态时被终止,那么您可能会发生内存泄漏,导致您的应用占用大量内存。
当操作系统开始耗尽内存时,它将首先终止后台任务,首先是内存最密集,然后是最前端的应用程序。用户永远不需要手动终止后台应用程序以节省内存。这一切都是自动完成的。
如果您的应用在后台,那么它可以随时终止。您可以做的最好的事情是减少整体内存使用量,并希望操作系统在您的应用程序之前杀死其他一些内存密集型应用程序。
didReceiveMemoryWarning
通常会释放您必须尝试的任何缓存数据,以减少应用的占用空间。您的应用中当前不可见的任何视图控制器都将被卸载,并且将调用viewDidUnload
方法。您应该在此处将任何IBOutlet
属性设置为nil。
但是,如果您的应用程序在处于活动状态时被终止,您应该使用Instruments中的Leaks工具来确保您没有任何泄漏,并且您不会消耗异常大量的内存。