在我使用EXC_BAD_ACCESS的游戏中,偶尔会出现一个cocos2d-iphone错误。
当发生这种情况时,Xcode会执行以下任一操作:
cocos2d-iphone框架中处理与CCMenu相关的部分。当然,这表明导致问题的是我的CCMenu实例之一--然而,由于某种原因,我找不到是哪个实例导致了问题:基本上,回溯不会告诉我我的错误,因为它不包括我自己的代码,只有cocos2d-iphone--而且我很肯定是我的代码导致了问题。由于运气不佳,我决定尝试一下NSZombie这个东西。我看了“计划”菜单,检查了僵尸部分。
据我所知,它所做的是永远不会释放任何东西。这样,它就可以告诉我我的对象是什么,当我不应该访问的时候,我试图访问它。
听起来是个不错的计划。但我担心的是它从来没有释放过记忆。我的应用程序是一个游戏,它装载大量的纹理等等,事实上,它需要释放很多纹理,每次你访问一个新的地图。如果我的应用程序不发布其中的任何一个,我相信它会崩溃后,几分钟的游戏,因为这是一个非常图形沉重的游戏。
现在,你可以说这没什么大不了的,因为我所要做的就是找出错误,修复它,禁用僵尸并让它停下来--几分钟就够了.
..。但不幸的是,我对如何重现这个错误知之甚少。事实上,我花了好几个小时试图复制它。我唯一的线索是,它可能与我的游戏中的CCMenu实例相关,但我游戏的几乎每个方面都是CCMenu实例。
因此,当我试图复制错误时,我希望让僵尸长时间启用,这可能是不可能的,因为我的应用程序可能会因为很长一段时间没有释放任何内存而崩溃。我做什么好?
发布于 2013-10-23 03:58:39
我非常肯定,如果您也打开NSDeallocateZombies,对象最终会被释放。
https://stackoverflow.com/questions/19532418
复制相似问题