0

아주 간단한 일을하고 싶지만 작동하지 않습니다. NSMutableArray에 CCParticleSystemQuad를 추가하고 삭제하고 싶습니다.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]를 가지고 있습니다). 그리고 아무것도 사용하지 않고 메모리를 사용하고 있습니다. 내가 뭘 놓치고 있니? 나는 ARC를 사용합니다. (NSString *) 개체를 시도하고 잘 작동합니다 ... Thx.

답변

0
[myArray removeLastObject:cont]; 

배열에서 int를 삭제하려고합니다.

귀하의 문제는 당신이로 removeChild를 호출하지 않는 것을 할 수있다 : 당신은 removeLastObject (매개 변수없이) 또는 removeObjectAtIndex을 사용하고 싶었 입자

0

당신은 배열에서뿐만 아니라 부모에서 제거해야합니다.

[part removeFromParentAndCleanup:YES]; 

//

는 마지막 개체

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

그것은 여전히 ​​작동 사는 내 개체가없는 제거 배열

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

//에서 개체를 제거합니다. addChild를 호출하지 않은 경우 removeChild를 호출해야하는 이유는 무엇입니까? 그래서, 잘 이해한다면 메모리에서 CCParticleSystemQuad를 추가하고 제거하고 싶을 때 항상 [self addChild : part]와 [self removeChild : part]를 사용해야합니다. 이게 NSString * 객체로 작동하는 이유는 무엇입니까? 왜냐하면, 메모리에서 그것을 제거하기 위해 NSString을 추가 할 필요가 없었습니다 ... – Niknolty

+0

어떤 레이어/노드에 추가되지 않은 경우 왜 cocos2d 입자 객체를 만들까요? 나는 u가 추가 된 것을 생각했다. 그래서 제거 할 것을 제안했다. 좋아 LearnCocos2d 이미 배열에 int 추가에 대한 실수를 언급했다 .. 해피 코딩. – Guru

+0

Thx에 대한 조언. 그러나 배열로 저장하는 것이 왜 실수입니까? – Niknolty

관련 문제