0

CCMenu を使用した Cocos2d シーン (CCLayer) があります。私はdeallocを次のように実装します

- (void) dealloc {
    [menu release];
    menu = nil;

    [super dealloc];
}

共有ディレクタを使用してシーンを別のシーンに置き換えると、2 番目のシーンが読み込まれ、dealloc でプログラムがクラッシュします。

[super dealloc]; //Thread1: Program received signal: "EXC_BAD_ACCESS".

シーンを置き換える呼び出しは

[[CCDirector sharedDirector] replaceScene:
     [CCTransitionFade transitionWithDuration:0.5f scene:[SomeOtherScene scene]]];

なぜこれが起こるのですか?[super dealloc] を呼び出す必要がありますか?

4

2 に答える 2

2

で作成menuした場合は、保持されていないため[CCMenu menuWithItems:...]、 でリリースする必要はありませんdealloc

于 2012-05-25T16:38:06.680 に答える
0

メニューをゼロに設定してからリリースする必要があると思います。これが問題になる可能性があります。そして、2番目の質問に答えるには、必ず[superdealloc]に電話する必要があります。そうしないとさらに問題が発生する可能性があります。

于 2012-05-24T21:01:44.200 に答える