0

私は非常に単純なことをしたいのですが、うまくいきません。NSMutableArray に CCParticleSystemQuad を追加して削除したいと考えています。これが私がすることです:

int cpt = 0;
NSMutableArray *myArray = [[NSMutableArray alloc] init];
for (cpt = 0; cpt < 10; cpt++) {
    part = [CCParticleSystemQuad particleWithFile:@"whiteExplosion.plist"];
    [myArray addObject:part];
}

NSLog(@"state of myArray : %@", myArray);

int cont = 0
for (cont = 0; cont < 10; cont++) {
    [myArray removeLastObject:cont];
}

NSLog(@"state of myArray : %@", myArray);

私がこれを初めてNSLogしたとき:

state of myArray : (
    "<CCParticleSystemQuad = 0x91ee380 | Tag = -1>",
    "<CCParticleSystemQuad = 0x84aca20 | Tag = -1>",
    "<CCParticleSystemQuad = 0x125136c0 | Tag = -1>",
    "<CCParticleSystemQuad = 0x125b0fc0 | Tag = -1>",
    "<CCParticleSystemQuad = 0x1250d480 | Tag = -1>",
    "<CCParticleSystemQuad = 0x1250fa50 | Tag = -1>",
    "<CCParticleSystemQuad = 0x9108840 | Tag = -1>",
    "<CCParticleSystemQuad = 0x9152b70 | Tag = -1>",
    "<CCParticleSystemQuad = 0x914fb80 | Tag = -1>",
    "<CCParticleSystemQuad = 0x9135470 | Tag = -1>"
)

2回目はこれを持っています:

state of myArray : (
)

ご覧のとおり、私の CCParticleSystemQuad は削除されました。しかし、Instruments (割り当て) をチェックインすると、それらはまだ有効であり ([CCParticleSystemQuad allocMemory] ​​が 20 個あります)、メモリを無駄に使用しています。何が欠けていますか?ところで、私はARCを使用しています。(NSString *) オブジェクトで試してみましたが、正常に動作します... Thx。

4

2 に答える 2

0
[myArray removeLastObject:cont];

配列から int を削除しようとしています。removeLastObject (パラメータなし) または removeObjectAtIndex を使用したい:

あなたの問題は、 removeChild:particle を呼び出していないことかもしれません

于 2013-06-02T08:01:56.267 に答える
0

配列からだけでなく、親からも削除する必要があります。

 [part removeFromParentAndCleanup:YES];

//配列からオブジェクトを削除する

for (int i = 0; i < [myArray count]; i++) {
        [myArray removeObjectAtIndex:i];
}

//最後のオブジェクトのみを削除

        [myArray removeObjectAtIndex:([myArray count]-1)];
于 2013-06-02T08:02:09.763 に答える