【问题标题】:Received memory warning in modal view -- parent view controller's objects get released. How to prevent?在模态视图中收到内存警告——父视图控制器的对象被释放。如何预防?
【发布时间】:2010-10-05 22:24:17
【问题描述】:

我的根视图控制器是一个带有多个注释的地图。选择注释并点击附件按钮时,我显示了一个如此如此如此:http://i.stack.imgur.com/hACyH.png

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

我想保留这些对象,即使有内存警告。造成这种情况的原因似乎是在根视图控制器中调用了 viewDidUnload,在这种方法中,我将所有变量设置为 nil。处理这种内存情况的正确方法是什么?

谢谢!

【问题讨论】:

    标签: iphone objective-c memory-management mapkit


    【解决方案1】:

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

    【讨论】:

    • 我不再使用 didUnload 方法,它工作正常。唯一的缺点是我收到 UIWebview 的不间断内存警告,但该应用程序现在似乎运行良好。现在我将了解如何使用 UIWebview 消除持久性内存警告。
    猜你喜欢
    • 2011-08-18
    • 2012-02-25
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    相关资源
    最近更新 更多