これは私の 'ダニ' 関数であるオブジェクトしかし、配列は20個のオブジェクトで安定しているということです。したがって、オブジェクトが([mutable removeLastObject];によって)「削除されている」場合、どのように画面に表示されますか?ここで割当て解除NSMutableArrayのは
は、次のピクルスです...
は、今私は、initが
- (void) tick: (ccTime) dt
{
NSLog(@"%d",ticker);
if(fbut.Adown == YES && ticker > 4)//fbut is a button
{
elayer = [[effectsLayer alloc] retain]; // *********each effectlayer draws //a projectile that moves forward 'x' ticks
elayer.e_playpos = glayer.playerpos; // player position
[self addChild:elayer z:2];
[mutable addObject: elayer];
[elayer release];
if(mutable.count > 20) // when there are 20 projectiles drawn, start //destroying the last one.
{
NSLog(@"mutable: %d", mutable.count);
[mutable removeLastObject];
}
ticker=0;
}
ticker++;
// . . .
そして今、何の効果層が描かれていないされている(*****さんを探す)を保持するように変更はなく、それでもNSArrayは21〜20個のオブジェクトを保持します。これらのオブジェクトはすべて初期化されていません。私は最後にinitを追加しました: elayer = [[[effectsLayer alloc] retain] init];
私はこれまでと同じ効果があります。
ので、私は道を超える20
私の目標は、唯一の20を一度に描画するalowedと20があり、一度持つことである、PEW PEWのPEW年代のとてもたくさん.. 同じ効果を自動解放してみてください描かれた彼らは割り当て解除されます。今のところ、割り当てを解除して、プログラムは約2000分のeレイヤーがあり、fpsが約5で約4分までOKです。
なぜ船がピューピューになりませんか?
(ちなみに私はcocos2dフレームワークを使用してM)これは私が著作権で保護されたプロジェクトである、アレックスのアーリー2009
そして、たとえ 'addChild:z:'がオブジェクトを保持していても何らかの形で参照を保持していたとしても、それはまだレイヤーを子として追加したことを意味しますが、 'dealloc' ed。 – Chuck
@Chuck +1非常に真実。 –
さらに、「addChild:」にそれを保持しないと、20項目に制限されず、クラッシュする可能性があります。 – bobDevil