【问题标题】:Dealloc called last after next class下节课后最后一次调用 Dealloc
【发布时间】:2011-07-25 00:00:34
【问题描述】:

我正在使用以下代码从 Helloworld 场景切换到 levelmenu 场景。

NSString *st=[NSString stringWithFormat:@"levelmenu"]; CCTransitionFade *trans=[CCTransitionFade transitionWithDuration:0 场景:[NSClassFromString(st) 场景]]; NSLog(@" 在替换场景之前"); [[CCDirector sharedDirector] replaceScene:trans]; NSLog(@"替换场景后");

我也在 levelmenu init 中放了一个 NSlog,但我得到的控制台输出为.....

2011-03-29 10:16:24.307 testProject[6574:207] 初始化级别菜单 2011-03-29 10:16:24.787 testProject[6574:207] 在 replaceScene 之前 2011-03-29 10:16:24.787 testProject[6574:207] 替换场景后 2011-03-29 10:16:24.860 testProject[6574:207] 解除分配

我们可以改变调用上述顺序的顺序,即在调用levelmenu的menu init的dealloc之后应该被调用。

【问题讨论】:

    标签: cocos2d-iphone


    【解决方案1】:

    您不应该为此使用 dealloc/init。 您可以尝试 [CCNode onEnter]/CCNode onExit,当您的场景进入/离开屏幕时调用。

    【讨论】:

    • 感谢您的回复。我们的游戏有 10 个类。一段时间后,我们必须从一个班级转移到另一个班级。问题是当我们从一个类移动到另一个类时,调用顺序是这样的 1. 将加载下一个类的函数 2. 第二类的 init。 3. 头等舱的dealloc。我们正在释放数组并在第一类的 dealloc 中卸载声音。在分析器中未发现内存泄漏。
    • 我们想要的是按这个顺序调用。 1.首先加载下一个类的函数(这没关系)。 2. 头等舱的dealloc。 3.二等舱的初始化。还有一件事。我们在第一类的dealloc中卸载相同的声音并在第二类的init中预加载它。这是一个问题。我们的游戏会在一段时间后不定期地崩溃。我们不知道是什么原因。我们认为可能是上述原因。我们在任何类中也找不到任何内存泄漏。谢谢。
    猜你喜欢
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2023-02-13
    • 2020-03-24
    相关资源
    最近更新 更多