ios - 在实际需要频繁释放大量内存的应用程序中长时间使用 NSZombies

标签 ios objective-c xcode cocos2d-iphone nszombie

我在使用 cocos2d-iphone 的游戏中偶尔会出现 EXC_BAD_ACCESS 错误。

当发生这种情况时,Xcode 会执行以下任一操作:

  • 显示 main.m 文件,没有堆栈回溯等。
  • 显示 cocos2d-iphone 框架中处理与 CCMenu 相关的触摸的部分。这当然表明我是我的 CCMenu 实例之一导致了问题 - 但是,我找不到哪个实例,因为由于某种原因,回溯似乎仅限于该区域框架的:基本上,回溯不会告诉我我的错误,因为它不涵盖我自己的代码,只涵盖 cocos2d-iphone 的 - 而且我相当确定这是我的代码是什么导致了这个问题。

运气不好,我决定尝试一下这个 NSZombie 东西。我进入方案菜单并检查了僵尸部分。

据我所知,它所做的并不是发布任何东西。这样它就可以告诉我我不应该访问的对象是什么。

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

现在,你可能会说这没什么大不了的,因为我所要做的就是找到错误,修复它,然后禁用僵尸,然后就到此为止 - 几分钟就足够了......

...但是,不幸的是,我不知道如何重现这个错误。事实上,我花了几个小时试图重现它。我唯一的线索是,它可能与我的游戏中的 CCMenu 实例有关,但无论如何,我的游戏的几乎每个方面都是一个 CCMenu 实例。

因此,我希望在尝试重现错误时长时间启用“僵尸”,但这可能是不可能的,因为我的应用程序可能会因长时间不释放任何内存而崩溃。我该怎么办?

最佳答案

我非常确定,如果您也打开 NSDeallocateZombies,这些对象最终会被释放。

关于ios - 在实际需要频繁释放大量内存的应用程序中长时间使用 NSZombies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19532418/

相关文章:

ios - 允许 UIScrollView 滚动过去的内容而不弹跳

iphone - MPMoviePlayer 锁屏播放/暂停音频

iphone - 如何自定义导航栏的文字颜色

objective-c - NSArray 中包含的模型上的 KVO

swift - Xcode Swift编译报错import name too long

iphone - 缩放 UIScrollView(不仅仅是其内容)

ios - NSDateFormatter 在调用 datefromstring 方法时返回 nil?

ios - 偶尔从NSDateFormatter返回零

ios - Today ViewController 的主视图右移

iphone - 如何在 Xcode 中暂时禁用运行脚本阶段