这个问题让我发疯,已经有5天了,我正试图解决它。在这里,我迫切需要一个解决方案。
我正在开发一个关于Cocos2d的简单游戏。循环方法: - (void)update:(CCTime)delta在每个特定的时间间隔内被调用。
这件事发生在5天前,上帝知道为什么。在游戏循环中间的任何随机点,在游戏循环开始后大约10秒(可能在5到20秒之间变化),它只会冻结,没有明显的原因。仪器不会检测到任何东西,调试器不会注意到任何事情。我注意到的是循环停止被调用。没有记忆问题或任何与之相关的问题。
没有特定的方法称为驱动冻结,这是完全随机的。同样的事情发生在iPhone,iPad,iPod touch上,它是唯一运行或不运行的应用程序,而且它的iOS 4.0或5.0 ......绝对没有从仪器检测到泄漏,也没有Zombie对象。
我再说一遍,这不是崩溃,只是在游戏循环中冻结。 PS:即使图形被冻结,音乐仍然在后台运行。
我使用的是iOS 5.0和Cocos2d 1.0.1的Xcode 4.2,在iOS 5.0.1上运行我在iPad 1,iPhone 4,3GS和iTouch 3g上的游戏。同样冻结......
有什么想法吗?请帮助!
答案 0 :(得分:0)
查找名称以" unchedule"开头的方法发生的任何消息发送。
如果这没有帮助,请在方法"中选择CCScheduler类中的断点"一旦冻结发生。如果CCScheduler没有"打勾",找出原因。如果仍然打勾,请检查其列表中是否仍有任何选择器。要做到这一点,你可能想要在所有" unchedule"中设置断点。 CCScheduler类的方法,以找出谁是非排序方法及其原因。
答案 1 :(得分:0)
嗯,我知道用coco(版本99.4)'停止'所有图形处理的确定方法,而触摸处理机制仍然完美地工作。我刚刚检查了一个旧版本的项目,现在就是:
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:nil forKey:@"key"];
我刚刚在战斗场景包装和退出场景中加入了这个方法,果然。我得到的是一个死寂的摊位,没有任何例外,音乐和触摸处理仍然有效。日志仍然显示我的触摸处理例程被处理和回调。这让我长时间踩了一脚,现在我把自己“模仿”了出类似的明显错误。如果在你的任何一个线程中发生类似这样的事情,应用程序会给你“冻结”位。希望你能找到你的根本原因。