0

それは少し単純な問題ですが、私はそれを理解することができませんでした。

1->アプリケーションの開始(MainMenuシーンを使用)

2->開始(サブレベルのシーンが置き換えられます)

3->最初のレベルを選択します(Level1Sceneが置き換えられます。ゲームが開始されます。)

4->メインメニューに戻ります。(MainMenuシーンが置き換えられます)

5->開始(サブレベルのシーンが置き換えられます)

6->第1レベルを選択

7->クラッシュ。

box(32842,0x3f5c9d98)malloc:*オブジェクト0x4bed44のエラー:解放されたオブジェクトのチェックサムが正しくありません-オブジェクトは解放された後に変更された可能性があります。*デバッグするmalloc_error_breakにブレークポイントを設定します

シーンaからbを置き換えると、リリースされますか?

私の知る限り、pushSceneだけがシーンをメモリに保持します。

+(CCScene *) scene {

    CCScene *scene = [CCScene node];

    HelloWorldLayer *layer = [HelloWorldLayer node];

    [scene addChild: layer];

    return scene;
}

シーンとレイヤーは自動解放オブジェクトです。replaceSceneが呼び出されたときに解放する必要があります。(シーンの置き換え中に前のシーンが解放された場合。)

4

1 に答える 1

0

私はこの問題を解決しました。その奇妙ですが動作します。

CCSprite のサブクラスである Collectable というクラスがありました。コレクタブル オブジェクトを含むシーンを 2 回目に置き換えると、クラッシュする可能性があります。私はそれをCCNodeに変換し、現在は動作しています。

多分それは誰かを助けるでしょう。

于 2013-03-22T08:56:13.953 に答える