2010-05-13 5 views
3

실시간 디버깅을별로 좋아하지 않지만 필요한 경우 해보십시오.Objective-C에서 스택 트레이스를 읽으시겠습니까?

코드 라인 Objective-C의 StackTrace는 무엇을 의미합니까? 변수가 인 것은 어떤 의미입니까? 예를 들어 :

2010-05-13 19:39:11.673 Thingers[21003:207] *** -[NSCFString count]: unrecognized selector sent to instance 0x3b0ebb0 
2010-05-13 19:39:11.674 Thingers[21003:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFString count]: unrecognized selector sent to instance 0x3b0ebb0' 
2010-05-13 19:39:11.675 Thingers[21003:207] Stack: (
    29303899 
    ... 
    11130 
) 

나는 우리가 (아마이 NSCFString이야?)를하지 않는 무언가에 count 메시지를 전송에 대해 얘기하고 있음을 볼 수 있지만 알아낼 수있는 방법이 무엇을 /를 해당 인스턴스 (0x3b0ebb0)에 대한 명명 된 참조는?

답변

6

여기 스택은 거의 쓸모가 없습니다. 여기서 중요한 것은이 문자열로 전송되는 -count을 의미

-[NSCFString count]: unrecognized selector sent to instance 0x3b0ebb0

입니다. 이는 일반적으로 메모리 관리 버그로 인해 발생합니다. enable NSZombie을 실행하고 프로그램을 다시 실행하여 과도하게 릴리스 된 내용을 확인할 수 있습니다.

또한 빌드 → Xcode에서 빌드 및 분석을 사용하여 가능한 메모리 관리 버그를 정적으로 찾습니다.

+0

감사합니다. 이 경우이 선택자를 가지고 있지 않은 객체에'count' 메시지를 보내고 있지만, NSZombie가 존재한다는 것은 좋은 일입니다. –

+0

@yar : 오. 컴파일러 경고를 무시하지 마십시오. – kennytm

관련 문제