在模态视图中收到内存警告 - 父视图控制器的对象被释放。怎么预防?

时间:2010-10-05 22:24:18

标签: iphone objective-c memory-management mapkit

我的根视图控制器是一个包含多个注释的地图。选择注释并点击附件按钮后,我会显示一个如下所示的模态视图:http://i.stack.imgur.com/hACyH.png

在此模态视图中,您可以查看注释坐标的街景视图(我使用UIWebview执行此操作)。您还可以提交照片,或执行其他一些内存消耗相对较高的任务。我在显示模态视图的同时在控制台中收到“已接收内存警告”消息时,父对象(IE浏览器对象)似乎被释放,因为一旦我关闭模态视图,地图现在以中心为中心地球(非洲附近南大西洋的某个地方)和一张桌面视图是空的。

我想保留这些对象,即使有内存警告也是如此。似乎导致这种情况的是在根视图控制器中调用viewDidUnload,并且在此方法中,我将所有变量设置为nil。处理这种记忆情况的正确方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

如果你确实得到didReceiveMemoryWarning,默认实现将卸载它的视图,如果可以的话,然后调用viewDidUnload。我不知道你是如何设置控制器的,但是你可能必须存储当前坐标,然后当调用viewDidLoad / Appear时,你可以确保将地图设置为你想要的位置。以下是视图控制器life cycle

上的Apple文档