【问题标题】:Am I always responsible for didReceiveMemoryWarning being invoked by the iPhone OS?我是否总是对 iPhone 操作系统调用 didReceiveMemoryWarning 负责?
【发布时间】:2009-04-22 18:49:04
【问题描述】:

我有一个关于如何以及何时调用 didReceiveMemoryWarning 的快速询问。我完全了解如何正确使用该方法。但是,我在文档中找不到的问题是,我为调用此方法管理内存占用的方式是否是我的错?

是否有可能我做的一切都很好并且 iPhone 操作系统需要内存,因此由于我是第三方应用程序而向我发送此通知?我一直在运行泄漏、ObjectAlloc 和任何可用的工具,以查看任何奇怪的行为。我的内存占用峰值最多为 2.2MB。我没有看到任何特别可怕的代码明智地完成。

现在我要打开一些其他应用程序,在这里和那里使用我的 iPhone,然后打开我正在开发的应用程序。这个视图最终是一个 UITableViewController,它显示了一个从远程 XML 提要构建的数据源。所以我可能做错了什么。但是在对我自己的代码进行任何指责之前,我需要更好地理解这种方法。

是否可以在管理内存的方式非常健康的应用上调用此方法?

【问题讨论】:

    标签: iphone objective-c cocoa-touch


    【解决方案1】:

    内存警告随时可能发生。有一些应用程序在后台运行,例如 Mail 和 Safari,它们在做谁知道什么。

    【讨论】:

      【解决方案2】:

      在许多方面,谁负责并不重要。苹果的代码确实泄露了;尤其是图像选择器和 HTTP 类(尽管后者不会严重泄漏)。无论导致警告的原因是什么,您是唯一可以编写代码从警告中恢复的人。

      没有记录应用程序的内存占用(我知道),因此我认为此消息肯定有可能随时发送到应用程序。它肯定会在模拟器和手机上的不同时间发送。这意味着没有“安全足迹”可以保证永远不会收到内存警告。显然,保持较低的内存占用会降低这种可能性。

      也许你应该发布一些示例代码,看看它是否泄漏了很多。您描述的应用程序听起来很简单,在正常使用时不会导致内存警告。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-29
        • 2012-08-27
        • 2018-09-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多