2011-03-06 3 views
7

iPhone - 참조하는 개체를 찾는 방법은 무엇입니까?

같은 메시지에서 개체 주소를 보여주는 엑스 코드의 포인트는 무엇

는 [의 CALayer는 유지] : 어떤 0x1bc320는 객체 당신이 찾을 수없는 발생했을 경우 메시지가 할당이 해제 된 경우 0x1bc320

로 전송?

내가 찾을 수있는 모든 개체에 대해 디버거를 검색 할 때마다 오류 메시지를 참조하는 개체가 하나도 발견되지 않을 때가 있습니다.

[CALayer retain] : 할당 취소 된 인스턴스로 메시지가 전송되었습니다.

그런 경우 개체를 찾을 수있는 방법이 있습니까? 뭔가 콘솔에 입력 할 수 있습니까?

감사합니다.

답변

11

그냥 po 0x1bc320을 입력하십시오. 또한 NSZombie 추적을 사용하는 계측기에서 할당 추적을 사용할 수 있습니다. 그건 애플 리케이션을 중단하고 당신에게 zombied 개체의 전체 수명을 보여줄 것입니다 그리고 deallocation 후 호출했다.

+1

이 경우 항상 NSZombie를 사용할 수 있지만이 방법은 도움이되지 못합니다. 나는 당신이 말한 것을 타이핑했다. 메시지는 다음과 같다 : ** - [CALayer respondsToSelector :] : 해제 된 인스턴스에 메시지가 전송 됨 0x1bc320 프로그램 수신 신호 SIGTRAP, Trace/breakpoint trap. ___forwarding___()의 0x35823910 디버깅중인 프로그램이 GDB에서 호출 된 함수에서 신호를받습니다. GDB는 호출하기 전의 컨텍스트를 복원했습니다. 이 동작을 변경하려면 "unwindonsignal 설정 해제"를 사용하십시오. 함수 (_NSPrintForDebugger)가 포함 된 식의 평가가 취소됩니다. – SpaceDog

+0

계속 ... "이것은 좀비 오브젝트의 전체 라이프 사이클을 보여줄 것이고 할당 해제 후 그것을 호출 한 사람은 ..."정확히 무엇을 보여줄 것입니까? – SpaceDog

+1

인스 트루먼 트를 사용하는 방법을 읽어 보시기 바랍니다. 여기에 설명하기에는 다소 복잡합니다. 그러나 객체 할당 도구를 실행에 추가하고 설정을 열고 "NSZombie Detection"을 활성화하면 인스트루먼트를 사용하여 객체의 수명주기를 탐색하는 방법을 알고 있다고 가정 할 때 모든). –

관련 문제