2010-10-05 71 views
2

我的根视图控制器是一个包含多个注释的地图。当选择一个注释并点击附件按钮时,我将显示一个模式视图,如下所示:http://i.stack.imgur.com/hACyH.png在模态视图中收到内存警告 - 父视图控制器的对象被释放。如何预防?

在此模式视图中,您可以获得街景视图查看注释坐标(我使用UIWebview )。您也可以提交照片,或执行一些看起来内存消耗相对较高的其他任务。任何时候,当我显示模态视图时,在控制台中收到“接收到内存警告”消息时,父对象(IE MapKit对象)似乎会被释放,因为一旦我解散了模态视图,地图现在居中于地球(南非大西洋附近的非洲附近)和桌面视图是空的。

即使存在内存警告,我也想保留这些对象。看起来造成这种情况的是viewDidUnload在根视图控制器中被调用,并且在这种方法中,我将所有变量设置为零。处理这种记忆状况的正确方法是什么?

谢谢!

回答

3

如果您确实收到了didReceiveMemoryWarning,则默认实现将卸载其视图(如果可以的话),然后调用viewDidUnload。我不知道你是如何设置你的控制器,但你可能需要存储当前的坐标,然后当viewDidLoad/Appear被调用时,你可以确保地图设置为你想要的位置。这里是视图控制器上的苹果文档life cycle

+0

我不再使用didUnload方法,它工作正常。唯一的缺点是我得到了与UIWebview不停的内存警告,但该应用程序似乎现在运行良好。现在我将发现如何通过UIWebview消除持久性内存警告。 – 2010-10-06 05:08:50

相关问题