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>"
)

我第二次有这个:

state of myArray : (
)

因此,正如您所见,我的 CCParticleSystemQuad 已被删除。但是,当我签入 Instruments(分配)时,它们仍然存在(我还有 20 个仍然存在 [CCParticleSystemQuad allocMemory])并且仍然没有使用内存。我错过了什么?顺便说一句,我使用 ARC。我尝试使用 (NSString *) 对象,它工作正常......谢谢。

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 回答