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 に答える