2012-11-11 3 views
0

나는 내 게임이 망가지는 버그에 약간의 문제가있다. 우선 그냥 좀비는 디버거가이 말을 개체를 활성화하여 나에게 "BAD_ACCESS"하지만했다 :- [CCSprite setPosition :] : 할당 취소 된 인스턴스로 전송 된 메시지는 무엇입니까?

- [CCSprite로 setPosition이 :] : 메시지 할당이 해제 된 경우 XXXX

충돌이 발생 객체 A와 B로 전송 충돌은 객체 B와 동일한 순간에 충돌이 발생하는 경우에만 발생합니다.

충돌시 A와 B를 모두 파괴해야하며 위의 상황을 제외하고는 정상적으로 작동합니다. 나는 그것의 가치에 대해 Box2D를 사용하고 있습니다.

더 구체적인 방법으로 오류를 추적 할 수있는 방법이 있습니까? A 나 B가 나에게 곤경에 빠지면 좋아.

+0

: 예를 들어 스프라이트를 생성하는 방법,/어떤 부모로부터 삭제, 당신은 몇 가지 목적 등을 배열에 추가 할 추가 ... – YvesLeBorg

+0

충돌하는 동안 Box2D 객체를 제거 할 수 없습니다. 아마도 그것은 여기에있는 문제의 일부입니다. – LearnCocos2D

답변

0

시뮬레이터를 사용하는 경우 MallocStackLogging 및 NSDebugEnabled를 활성화하십시오. 그런 다음이 메시지를 받으면 위반 객체의 프로세스 ID와 메모리 주소를 적어 두십시오. 그런 다음 터미널에서 malloc_history <pid> <memory_address>을 사용하여이 주소의 allocs 및 dealloc 기록을 확인하십시오. 각 alloc 및 dealloc의 스택 추적을 제공합니다. 가장 최근의 할당은 아마 당신이 보유하지 않았던 것을 할당 한 장소이거나, 가장 최근의 dealloc은 실수로 그것을 할당 해제 한 장소입니다. malloc_history에 대한

Heres는 맨 페이지 :

https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/malloc_history.1.html

일부 코드가 도움이 될
관련 문제