我总是要对iPhone OS调用的didReceiveMemoryWarning负责吗?

时间:2009-04-22 18:49:05

标签: iphone objective-c cocoa-touch

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

我有可能做得非常好并且iPhone OS需要内存,因此我发送此通知是因为我是第三方应用程序吗?我一直在运行泄漏,ObjectAlloc和我可用的任何工具,以便看到任何奇怪的行为。我的内存占用最多为2.2MB。我没有看到代码明智的任何特别可怕的事情。

现在它已经到了我打开其他应用程序的地步,在这里和那里使用我的iPhone - 然后打开我正在开发的应用程序。该视图最终是一个UITableViewController,它显示了一个从远程XML feed构建的dataSource。所以我可能做的事情非常糟糕。但在对自己的代码进行任何指责之前,我需要更好地理解这种方法。

是否可以在应用程序上调用此方法,该应用程序在管理内存方面非常健康?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

在许多方面,谁负责是无关紧要的。 Apple的代码漏了;特别是图像选择器和HTTP类(虽然后者不会泄漏严重)。无论是什么导致警告,您都是唯一可以编写代码以从中恢复的人。

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

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