什么是在cocos2d游戏中重播一个级别以防止终止的正确方法?

时间:2011-09-10 12:41:07

标签: iphone cocos2d-iphone

我再次陷入了游戏的终止问题,这次是因为内存溢出,但是当我重播关卡时,按照以下步骤:

步骤1:有一个菜单按钮,在点击哪个菜单弹出窗口打开时,这是通过push scene实现的,该按钮推动前一个场景的菜单类
第二步:在菜单弹出窗口中,有三个按钮:
1.从以前的状态恢复游戏的游戏,这是通过popping up the scene实现的, 2.replay level,
3.回到家,

最后两个是通过替换场景来实现的,这导致严重的内存泄漏,因为前一个类的dealloc没有被调用,所以,在分配中它显示内存增加约10-20mb,并没有减少。这可能导致问题的终止。

如何克服这个问题?我很难坚持下去。

2 个答案:

答案 0 :(得分:0)

听起来你没有从你的场景中释放一些东西。仅当对象的保留计数为零时才调用Dealloc。查看代码并确保在完成后正确释放每个对象。

XCode 4中的Analyze工具(默认为Cmd + Shift + B)应该可以让您清楚地了解漏洞情况。

答案 1 :(得分:0)

我做了什么来解决这个问题是一个棘手的解决方案:

以下是步骤:

第1步:制作全局变量(flag) 第2步:在该全局变量中存储操作,以便重放或返回主页 第3步:弹出推送的场景(已释放推送场景的内存) 第4步:检查日程选择器中的标志是什么(重新播放,或返回主页)
步骤5:替换询问的场景(释放当前场景的记忆)

这就是我实现它的方式,对此的任何建议都将受到高度赞赏。