0

私は 3 つのクラスを持っています。それらを A、B、C と呼びましょう。クラス A には B という CCLayer クラスが追加されています。B には CCLayer の子も追加されています。 A が置換されます。シーン A が -replaceScene を呼び出して置き換えられた場合、そのすべての子も削除され、クリーンアップされると想定しました。そこで、サウンドを停止するコードをクラス C の -onExit メソッドに入れようとしましたが、置き換えられたシーンの子に対して -onExit が呼び出されることはありません。それはなぜですか、どうすればこれを解決できますか?

すべてのメソッド(音を止めるなど)が機能しますが、どこで呼び出すかわかりません。状況は基本的に次のとおりです。私はメイン シーンにいて、「メイン メニュー」ボタンをタップすると、その子のサウンドの再生を停止したいと考えています。子供たちは、親が釈放されていることをどうやって知るのでしょうか?

4

1 に答える 1

1

onExitがノードに対して呼び出されない場合は、シーン階層から削除されていないことを意味します。これは、メモリリーク、特に保持サイクルを示しています。これは、CCSceneのdeallocメソッドにブレークポイントを設定することで確認できます。シーンを変更してもヒットしない場合は、シーンがリークしています。

于 2012-07-27T16:36:13.603 に答える