0

这是一个有点简单的问题,但我无法弄清楚。

1-> 应用程序启动(带有 MainMenu 场景)

2-> 开始(子关卡场景被替换)

3->选择第一级(Level1Scene被替换。游戏开始。)

4-> 返回主菜单。(MainMenu 场景被替换)

5-> 开始(子关卡场景被替换)

6-> 选择第一级

7-> 崩溃。

box(32842,0x3f5c9d98) malloc: * 对象 0x4bed44 错误:释放对象的校验和不正确 - 对象在释放后可能被修改。*在 malloc_error_break 中设置断点进行调试

当我将场景 a 替换为 b 时,a 是否已发布?

据我所知,只有 pushScene 将场景保存在内存中。

+(CCScene *) scene {

    CCScene *scene = [CCScene node];

    HelloWorldLayer *layer = [HelloWorldLayer node];

    [scene addChild: layer];

    return scene;
}

场景和图层是自动释放对象。调用 replaceScene 时必须释放。(如果在替换场景时释放了先前的场景。)

4

1 回答 1

0

我已经解决了这个问题。它很奇怪,但很有效。

我有一个名为 Collectable 的 CCSprite 子类的类。当第二次替换具有 Collectable 对象的场景时,它会发生崩溃。我现在将它转换为 CCNode 和它的作品。

也许它可以帮助某人。

于 2013-03-22T08:56:13.953 回答