2011-01-26 2 views
0

"유지 - 릴리스"질문과 관련이 있어야하는 메시지 EXC_BAD_ACCESS로 인해 충돌이 발생하는 원인을 검색 할 위치를 힌트가 필요합니다. viewDidAppear 이벤트 이후 잠시 후에 발생합니다.viewDidAppear 이벤트 후 iPhone EXC_BAD_ACCESS

0 0x01285a63 in objc_msgSend 
1 0x0580e400 in ?? 
2 0x0105fb8d in _ CFAutoreleasePoolPop 
3 0x00022443 in -[NSAutoreleasePool release] 
4 0x002d3bf2 in _ UIApplicationHandleEvent 
5 0x018cca36 in PurpleEventCallback 
6 0x01105064 in __ CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ 
7 0x010656f7 in __CFRunLoopDoSource1 
8 0x01062983 in __CFRunLoopRun 
9 0x01062240 in CFRunLoopRunSpecific 
10 0x01062161 in CFRunLoopRunInMode 
11 0x002cafa8 in -[UIApplication _run] 
12 0x002d742e in UIApplicationMain 
13 0x00001ca0 in main at main.m:14 

이상한 점은 하지 그냥 가끔, 항상 일이 없다는 것입니다; 처음 출시 된 전체 수업을 확인했지만이 문제를 일으킬 수있는 내용은 없습니다. 그 외에도 디버거를 단계별로 살펴보면 문제가 발생하지 않는 것 같습니다. 아마도 시뮬레이터 문제일까요?

답변

3

autorelease 풀이 이미 할당 해제 된 개체를 해제하려고하는 것처럼 보입니다. 나는 NSZombie가 문제의 물체를 찾는 것을 도울 것이라고 생각한다.

편집

:는 NSZombie는 다음과 같이 활성화하려면 :

  1. 하는 실행 파일의 정보를 가져옵니다.
  2. 인수 탭으로 이동하십시오. 섹션 추가하십시오에서
  3. "변수는 환경에 설정되는"

이름 : 값을 NSZombieEnabled : YES

그런 다음 평소와 같이 귀하의 응용 프로그램을 실행하고 충돌 할 때 당신에게 말할해야하는 할당 해제 된 객체가 해제 메시지를 수신했습니다.

+0

메시지가 너무 자세하지는 않지만 그 일을했기 때문에 문제를 발견 할 수있었습니다. 고맙습니다. – IssamTP

3

답변이 없지만 시뮬레이터 용 응용 프로그램을 컴파일하고 Instruments를 실행하고 라이브러리에서 "NSZombies enabled"가 설정된 메모리 할당 도구를 추가하십시오. 좀비 객체에 보낸 메시지에 대한 알림을 얻을 때까지 인스트루먼트에서 앱을 실행합니다.

+0

고맙습니다, 좀비가 그 일을했습니다 :) – IssamTP