Im 일반적으로 cocos2d 및 objective-c에 다소 새로운 것이므로 나와 함께 참아주십시오. 내 코드에서 EXC_BAD_ACCESS 오류가 발생하여 일반적으로 수행 한 작업을 수행하고 NSZombies를 활성화했습니다. 이것은 일반적으로 유용한 것을 내뱉지만, 이번에는 아무것도 내뱉지 않고 프로그램이 중단되지 않습니다.cocos2d의 EXC_BAD_ACCESS
충돌이 내 적 클래스
- (void)update:(ccTime)delta{
speed = SPEED;
angleToTargetInRadians = -atan2((self.position.y-target.position.y),(self.position.x-target.position.x));
속도의 업데이트 기능의 두 번째 줄 동안 와서 angleToTargetInRadians는 헤더 파일에 정의 모두 두 배입니다.
4 번째 또는 5 번째 적을 살해 할 때 충돌이 발생합니다.
- (void)die {
//give the player some points
[((AppController *)[UIApplication sharedApplication].delegate) addScore:POINTVALUE];
//make the shattered sprite
ShatteredSprite * blownUpShip = [ShatteredSprite shatterWithSprite:self piecesX:4 piecesY:4 speed:3 rotation:.02];
//add it to the layer
[self.parent addChild:blownUpShip];
//set the position and momentum and scale
[blownUpShip setVx: Vx];
[blownUpShip setVy: Vy];
[blownUpShip setScale:self.scale];
[blownUpShip setPosition:self.position];
[blownUpShip setRotation:self.rotation];
//get rid of the old ship
[self removeSelf];
}
- (void)removeSelf {
//remove self from array
NSMutableArray * enemies = [((AppController *)[UIApplication sharedApplication].delegate) Enemies];
[enemies removeObject:self];
[super die];
}
는 [슈퍼 다이] 다만
[self removeFromParentAndCleanup:FALSE];
도움이 이해된다! 감사!
대신 [[self removeFromParentAndCleanup : YES];를 호출하지 않는 이유는 무엇입니까? – ssantos
@ssantos 응답 해 주셔서 감사합니다! 방금 시도했는데 [자식 setParent : nil]에 다른 나쁜 액세스를 호출합니다. in - (void) detachChild : (CCNode *) 자식 정리 : (BOOL) CCNode.m 파일의 doCleanup. –
ARC 또는 ARC 없음? Xcode에서 전역 예외 브레이크 포인트를 활성화 했습니까 (실제 공격 라인을 보는데 도움이됩니까?) 정리 작업을 수행해야합니다 : 남은 작업을 중단하고 적의 스케줄 된 선택자가 계속 실행되며 정리 방법도 호출되지 않기 때문에 YES입니다. 정리를하지 않는 유일한 이유는 다른 노드에 즉시 노드를 다시 추가하려는 경우입니다. – LearnCocos2D