2013-10-23 26 views
0

在使用cocos2d-iphone的游戏中偶尔会出现EXC_BAD_ACCESS错误。在实际需要频繁释放大量内存的应用程序中长时间使用NSZombies

当它发生时,Xcode会那样做的这些:

  • 显示我的main.m文件,没有堆栈跟踪等
  • 给我看在cocos2d-iphone的框架的一部分,处理相关的触摸到CCMenu。这当然暗示我是我的CCMenu实例之一是什么导致了这个问题 - 但是,由于某种原因,我无法找到哪一个,因为回溯似乎是,仅限于框架的这个区域:基本上,回溯不会显示我的错误,因为它不包含我自己的代码,只有cocos2d-iphone - 我很确定它是我的代码是什么导致了这个问题。

运气不好,我决定试试这个NSZombie的东西。我去了方案菜单并检查了僵尸部分。

从我读过的内容看,它所做的不是发布任何东西。这样它可以告诉我什么我的对象是我试图访问时,我不应该有。

这听起来像一个很好的计划。但它让我担心它永远不会释放内存。我的应用程序是一款游戏,它会加载大量的纹理等,实际上,每次访问新地图时都需要释放大量纹理。如果我的应用程序不会发布任何这些内容,我相信它在玩了几分钟后会崩溃,因为它是一个非常重要的游戏。

现在,你可以说这不是什么大不了的事情,因为我所要做的就是找到错误,修复它,并禁用僵尸并称它为一天 - 几分钟就应该足够了......

...但不幸的是,我对如何重现这个错误没有多少想法。事实上,我花了数小时试图重现它。我唯一的领先是它可能与我的游戏中的一个CCMenu实例有关,但我的游戏几乎每个方面都是CCMenu实例。

因此,我想长时间启用僵尸,同时尝试重现错误,这可能是不可能的,因为我的应用很可能因为没有释放任何内存而崩溃。我该怎么办?

+0

在模拟器(调试)模式下保持僵尸活着应该没问题。我试过的是我的iOS音频记录和播放应用程序,应用程序没有崩溃,至少达到2 GB的内存使用量(使用NSZombieEnabled)。事实上,我在'调试'模式下保持这个标志没有任何这样的问题。 – Ashok

回答

1

我敢肯定,如果您也打开NSDeallocateZombies,对象最终会被释放。

相关问题