3

cocos2d ccnode クラスの removeChild:cleanup: メソッドの cleanup: の部分が不明なため、コードにバグが発生している可能性があります。

ありがとう。

4

2 に答える 2

7

すべてのアクションを停止し、CCNode に関連付けられているスケジュールされたセレクターのスケジュールを解除し、基本的に cocos がオブジェクトに対して持つ可能性のあるすべての参照を削除します。また、クリーンアップの呼び出しをオブジェクトのすべての子に伝達します。オブジェクトが自動解放可能なオブジェクトであり、そのオブジェクトへの参照を保持していない場合、objective-c ランタイムはオブジェクト自体とその子のためにメモリを再利用する必要があります。これはほとんどすべてのオブジェクトに当てはまりますが、対象のタッチ デリゲートとしてオブジェクトを追加した場合は当てはまりません。その場合、次のように onExit メソッドをオーバーライドすることをお勧めします。

- (void) onExit{
    [[CCTouchDispatcher sharedDispatcher] removeDelegate:self];
    [super onExit];
}

このようにして、オブジェクトはクリーンアップ時に完全に解放可能になります。

于 2012-06-23T03:27:14.707 に答える
1

cleanup は基本的に、その特定のノードで実行中のアクションをクリーンアップするかどうかを指定します。基本的に、YES に設定すると、削除されるオブジェクトは実行中のすべてのアクションを停止し、すべてのセレクターのスケジュールを解除します。

于 2012-06-23T03:25:31.923 に答える