内存警告后,iPhone游戏崩溃,消息“数据格式化程序暂时不可用,将在'继续'后重新尝试”

时间:2011-06-06 06:47:53

标签: iphone objective-c cocoa-touch memory-management

我正处于开发iPhone游戏的最后阶段,我正在处理似乎与内存相关的崩溃。

当我加载游戏关卡几次(10到15次)时,它只在设备上发生。我在第8次获得了一些内存警告,如果我继续加载相同级别,它最终会在控制台上显示此消息:

Program received signal:  “0”.
Data Formatters temporarily unavailable, will re-try after a 'continue'. (Unknown error loading shared library  
"/Developer/usr/lib/libXcodeDebuggerSupport.dylib")

有些goolge搜索告诉我这条消息通常意味着应用程序内存不足。

我在仪器下运行应用程序,但它没有检测到任何内存泄漏,并且每次加载一个级别时总分配大约为1.5Mb(实时和总字节数)达到5.4Mb,持续时间只有几分之一秒。这似乎并不是很多,因为泄漏的测试应用程序在同一设备(iPhone 3GS)上分配超过30Mb之前没有崩溃。我是乐器的新手,所以也许我错过了一些东西。

我几天来一直在努力解决这个问题,如果有人能指出我正确的方向,我会非常感激。

2 个答案:

答案 0 :(得分:0)

是的,您的搜索是正确的“此消息通常表示应用内存不足” 请阅读apple中的内存管理文档,如果内存泄漏,请正确释放对象。这将减少内存警告以及代码将正常工作。 当您在新级别加载时同时分配对象时,它会间接地为您分配对象,但您无法正确解除对象,这意味着您为新对象创建了新内存,但旧对象仍在内存中。在这种情况之后为什么不得到记忆警告?

答案 1 :(得分:0)

在仪器中检查活动监测仪器。您可以在任何给定时间找到正在消耗的正确RAM量。分配工具实际上并不是RAM使用的指标。然而,它将有助于找到已分配但未发布的内容。使用分配中的快照来查找泄漏的位置。

http://www.friday.com/bbum/2010/10/17/when-is-a-leak-not-a-leak-using-heapshot-analysis-to-find-undesirable-memory-growth/