0

这是我的第一篇文章,所以不要对我太粗鲁。

cocos2d 有问题。我正在制作一个带有 HUD 层和游戏层的游戏。当我用 [ClassicGameLayer 场景] 调用替换主菜单场景时,我的 HUD 和游戏层以这种方式初始化:

+ (CCScene*)scene
{
CCScene *scene = [CCScene node];

HudLayer *hud = [[[HudLayer alloc] initWithMode:1] autorelease];
ClassicGameLayer *layer = [[[ClassicGameLayer alloc] initWithHUD:hud] autorelease];

[scene addChild:hud z:hudZ];
[scene addChild:layer z:layerZ];

return scene;
}

当用户失败时,游戏 HUD 层调用

[[CCDirector sharedDirector] replaceScene:[GameOverLayer sceneWithMode:integer andScore:points]]];

HUD 层的 dealloc 被调用,但 ClassicGameLayer 的 dealloc 从未被调用。我搜索了几乎所有我能想到的东西,但仍然没有运气。有谁知道是什么导致了我这个问题?如果是这样,我该如何解决?我认为其他所有场景都在正确发布:)

4

1 回答 1

0

如果你的自动释放池永远不会到达它释放东西的地方,它永远不会释放任何内存。我正在编写的 Mac 应用程序曾经遇到过这个问题。它也不会在 Instruments 中显示为内存泄漏。

如果您遇到此问题,我建议不要使用自动释放。

于 2012-04-27T18:45:28.013 回答