2009-01-19 83 views
5

任何人都可以在这里指出正确的方向。我想在应用程序收到内存警告时作出响应,(我想知道如何响应此通知)。另外,我可以用我的应用程序连接多少内存?iPhone开发 - iphone应用程序的内存限制

任何文章或书籍参考将是伟大的。谢谢。

回答

7

如果您的应用获得内存警告(例如在您的视图控制器的didReceiveMemoryWarning方法中),则需要释放任何非关键数据。应该抛弃任何你正在使用缓存的或者可以重新生成的东西。例如,如果您的应用程序嘎吱嘎吱一些数字并将结果存储在一个大数组中,那么如果您不在使用该数组,则应该释放它。然后,当你再次需要时重新生成它。

多一点信息是在这里: Observing Low-Memory Warnings

+0

链接移动... https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ApplicationEnvironment/chapter_3_section_5.html – estobbart 2013-01-25 07:36:42

4

我已经非正式地听到当您的应用程序达到22 MB时发出警告。 (包含任何分配的内存 - iPhone将所有内容保存在物理内存中,不会分配给任何其他存储设备。)鉴于手机只有128 MB的总内存,这似乎是合理的。

该限制不包括共享系统库(如Objective-C运行时)使用的内存。虽然我不完全确定这一点,但我并不认为WebKit的内存使用被包含在UIWebView组件中,因为我相信WebKit总是被加载(但是,不是100%肯定)。

当您达到此限制时,最好的办法是免费获取任何您可以轻松地从输入文件(如视图,图像和缓存数据)重新生成或重新读取的内容。

+0

是啊,这似乎快要根据我的经验权利。尽管没有关于Safari使用它自己的记忆的线索。 – schwa 2009-01-19 19:52:04