0

Я хочу сделать очень простую вещь, но она не работает. Я хочу добавить CCParticleSystemQuad в NSMutableArray и удалить их. Вот что я делаю:CCParticleSystemQuand не освобожден

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 удален. Но, когда я проверяю Инструменты (распределения), они все еще живут (у меня есть 20 все еще живущих [CCParticleSystemQuad allocMemory]) и все еще использую память впустую. Что мне не хватает? BTW Я использую ARC. Я попытался с объектом (NSString *), и он отлично работает ... Thx.

ответ

0
[myArray removeLastObject:cont]; 

Вы пытаетесь удалить int из массива. Вы хотите использовать removeLastObject (без Params) или removeObjectAtIndex:

Ваша проблема может быть, что вы не вызывая RemoveChild: частица

0

Вы должны удалить его из своего родителя не только из массива.

[part removeFromParentAndCleanup:YES]; 

// удалить объект из массива

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

// удалить только последний объект

 [myArray removeObjectAtIndex:([myArray count]-1)]; 
+0

Он не работает до сих пор мои объекты живые. Почему мне нужно вызвать removeChild, если я не вызвал addChild? Итак, если я хорошо понимаю, мне всегда нужно использовать [self addChild: part] и [self removeChild: part], когда я хочу добавить и удалить CCParticleSystemQuad из памяти? Что это работает с объектом NSString *? Причина, мне не нужно было добавлятьChild мой NSString, чтобы удалить его из памяти ... – Niknolty

+0

Почему вы создаете объект частицы cocos2d, если он не добавлен ни к одному слою/узлу? Я думал, что добавил .. предложил. Ok LearnCocos2d уже упомянул вашу ошибку о добавлении int в массив. Хорошая кодировка. – Guru

+0

Thx для вас совет. Но почему это ошибка, чтобы запастись ею в массив? – Niknolty

Смежные вопросы