2010-06-24 3 views
0

시뮬레이터 3.1.3에서 내 앱을 테스트 중이므로 정상적으로 실행됩니다. 는 3.2 시뮬레이터 와서, 그것은 바로 처음부터 충돌 :시뮬레이터 3.2에서 실행 중 예외가 발생했습니다.

2010-06-24 16:35:29.208 MyTestApp[6991:207] *** Terminating app due to uncaught exception 'NSGenericException', reason: 'This coder requires that replaced objects be returned from initWithCoder:' 
2010-06-24 16:35:29.213 MyTestApp[6991:207] Stack: (
46195275, 
2520474889, 
46194715, 
46194554, 
6387912, 
6392266, 
5568184, 
6388086, 
6386450, 
6392266, 
5564974, 
5573454, 
3555255, 
3560368, 
3586056, 
3567777, 
3599431, 
52998524, 
45735996, 
45731912, 
3559044, 
3591649, 
10824, 
10678 

)

지금까지 내가 아는 한, 난 정말이 무엇인지 모르는 "initWithCoder"방법을 (사용하지 않는 그래도).

문제의 원인을보다 잘 이해할 수 있도록 예외가 throw 된 위치를 어떻게 알 수 있습니까?

ps : 중단 점 : objc_exception_throw (위치가 libobjc.A.dylib이고, 이상하게도 수동으로 위치를 입력해야합니다. objc_exception_throw를 추가했을 때 xcode에서 찾았을 것으로 예상했습니다). 그러나 여전히 동일한 추적과 더 이상의 정보가 없습니다. 특히 관심의 Debugging Tips for Objective-C

콘솔 명령 info line *입니다 :

+0

'initWithCoder'는 일반적으로 XIB 파일이로드 될 때 호출됩니다. 첫 번째로 확인하고 싶을 수도 있습니다 – iwasrobbed

+0

안녕하세요,이 오류 때문에 (내 앱이 깨끗하지 않았기 때문에) 처음부터 다시 작성하기로 결정했습니다. 하나의 코코아 콩 파일에서 뭔가를 바꿀 때까지 일을 시작하기 시작했습니다. (무엇을 알지 못합니다.하지만 큰 것은 아니 었습니다.) 나는이 오류가 다시 발생하기 시작합니다. 당신이 말했듯이 이것은 nib 파일들에 대한 링크이지만, 나는 그 이유가 무엇인지 모릅니다. – Luc

+0

안녕하세요, 마침내이 문제의 원인을 발견했습니다. 당신 말이 맞았어요.이 파일은 nib 파일에 링크되어 있습니다. 메인 nib 파일에서 NSDictionary 타입의 객체 인스턴스를 추가했습니다. 이것은 앱 델리게이트의 속성으로 사용하는 객체입니다. 대신 위임자에서이 개체를 초기화하고 훨씬 더 나은 지금 작동합니다. 고마워. Luc – Luc

답변

1

이 오류의 원인을 파악했습니다. IB 내에서 NSDictionnary 유형의 객체를 만들었으며 올바른 방법이 아닌 것 같습니다. 대신 프로그래밍 방식으로이 동일한 개체를 XCode로 만들었으며 정상적으로 작동합니다. 어떤 종류의 지속적인 문제인 것처럼 보입니다.

1

이 페이지는 몇 가지 유용한 정보를 제공해야합니다. 예외 로그에 나열된 번호 중 하나는 스택의 주소입니다. 10,000 이하 범위에있는 하위 애플리케이션은 대개 앱의 기본 메소드에 위치합니다 (예 :). 가장 높은 원거리 주소는 기본 라이브러리를 나타내는 경향이 있습니다.

info line *10678 명령을 사용하면 main 메서드의 특정 줄에 대한 정보가 반환되므로 도움이되지 않습니다. 일반적으로 트릭은 기본 라이브러리가 시작되기 전에 가장 높은 주소를 찾는 것입니다. 나는 이것이 당신의 문제를 얼마나 도울 것인지 확신 할 수 없다. 예측 된 작은 주소와 그 다음으로 큰 주소 사이에 큰 차이가 있기 때문이다. 어쨌든 맨 아래쪽에있는 두 개의 가장 작은 주소 (게시 한 로그에서 볼 수있는 3555255)부터 시작하여 코드 파일 중 하나에서 줄을 반환하는지 확인하십시오. 그렇다면 위의 코드를 확인하고 코드에서 마지막 주소를 찾을 때까지 계속하십시오. 희망이 도움이됩니다.

+0

덕분에 디버깅 도구를 더 잘 이해할 수있었습니다. 나는 이것을 점검 할 것이다. 감사합니다, 리크 – Luc

관련 문제