0

メインクラスがあり、他のレイヤーをに追加したいのですが、そのレイヤーがアニメーションを実行すると、同時にそのレイヤーのコピーがいくつか必要になると問題が発生します。たとえば、メインの現在のレイヤーの上に、爆発アニメーションを行うレイヤーがあります。私がそれを使用するたびに、私はそれのコピーを作成します(インスタンスの割り当て)、いつかそのコピーを解放する必要がありますが、これを行うことはできません:

explotionLayer *instance=[[explotion alloc]init];
[instance someFunction ];
[instance release];

時間がsomeFunctionかかり、それが終了すると、それから他の機能instanceが実行されているため、そのインスタンスは前に解放できません。

同時に(ゲーム中に)多くのインスタンスを作成し、アニメーションや他のすべてのタスクを実行したときにのみ、適切なタイミングでそれらを解放する方法を管理するにはどうすればよいですか。

そのインスタンスからメインレイヤーの関数にコールバックして解放できることは知っていますが、これは堅牢な方法ではありません。

4

2 に答える 2

0

使用する

[instance autorelease];

いいえ、それを台無しにします。本当にARC を使用する必要があります。そのような問題を考慮する必要さえなくなり、リークが少なくなります。

また、インスタンスがノード階層に追加された場合でも、cocos2d はそれを保持しています。

于 2013-10-26T17:26:56.503 に答える
0

自動参照カウント (ARC) を使用してください。インスタンス変数に正しいプロパティを定義し、ARC に移行するだけです。フレームワークがメモリ処理を処理します。

于 2013-10-26T17:34:03.277 に答える