2010-02-07 3 views
2

배경 :EXC_BAD_ACCESS

나는 CS193P 과정에서 "HelloPoly"할당을 시도하고있다. .xib 파일과 사용자 정의 컨트롤러 클래스를 만들었습니다.

나는 어떤 방법도 제공하지 않았습니다. IB가 클래스 파일을 xcode에 쓰는 것을 허용했습니다.

문제 :

내가 응용 프로그램을 시동 매 시간, 그것을 밖으로 폭탄. gdb를 실행할 때 EXC_BAD_ACCESS 오류가 표시됩니다. 이것은 내가 메모리에 존재하지 않는 무언가에 접근한다는 것을 의미합니까? 내가 가지고있는 것은 IB와 메인이 만든 기본 파일뿐입니다. 아무것도 더.

나는 무엇이 다른지 알아보기 위해 게시 된 코드 솔루션을 확인했으며 다음에 무엇을 시도해야할지 모르겠습니다. 시작할 때마다 앱이 충돌 할 때 보통 무엇을 확인합니까?

스택 추적은 UIApplicationMain을 만들 때 main.m에서 발생하는 것을 보여줍니다. 즉, 응용 프로그램 위임자를 만들 수 없습니다. 내가 그들을 놓친 경우에하시기 바랍니다 단서 나

Program received signal: “EXC_BAD_ACCESS”. 
(gdb) where 
#0 0x01b70d45 in CFHash() 
#1 0x01b741cf in __CFDictionaryFindBuckets1b() 
#2 0x01b72b0a in CFDictionaryGetValue() 
#3 0x00450535 in -[UIProxyObject initWithCoder:]() 
#4 0x0133886e in UINibDecoderDecodeObjectForValue() 
#5 0x013398c2 in -[UINibDecoder decodeObjectForKey:]() 
#6 0x00450b35 in -[UIRuntimeConnection initWithCoder:]() 
#7 0x0045101c in -[UIRuntimeEventConnection initWithCoder:]() 
#8 0x0133886e in UINibDecoderDecodeObjectForValue() 
#9 0x0133820a in UINibDecoderDecodeObjectForValue() 
#10 0x013398c2 in -[UINibDecoder decodeObjectForKey:]() 
#11 0x0044feab in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:]() 
#12 0x00451fcb in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:]() 
#13 0x002910a6 in -[UIApplication _loadMainNibFile]() 
#14 0x0029a82a in -[UIApplication _runWithURL:sourceBundleID:]() 
#15 0x00297b88 in -[UIApplication handleEvent:withNewEvent:]() 
#16 0x002936d3 in -[UIApplication sendEvent:]() 
#17 0x0029a0b5 in _UIApplicationHandleEvent() 
#18 0x0239eef1 in PurpleEventCallback() 
#19 0x01bb2b80 in CFRunLoopRunSpecific() 
#20 0x01bb1c48 in CFRunLoopRunInMode() 
#21 0x00291e69 in -[UIApplication _run]() 
#22 0x0029b003 in UIApplicationMain() 
#23 0x000026a8 in main (argc=1, argv=0xbffff000) at main.m:14 

내가 다른 스레드에서이 특정 문제를 보지 못했지만, :

여기에 추적합니다.

아이디어가 있으십니까?

감사합니다.

+0

viewDidLoad 메서드가 중단 점을 두어 호출되는지 여부를 확인하고 응용 프로그램이 충돌하는지 여부를 확인합니다. Ore that – Nithin

답변

3

NibDecoder에서 충돌이 발생합니다. 즉, XIB 파일을로드하는 중입니다. 존재하지 않거나 초기화되지 않은 객체 또는 속성에 대한 참조가있을 수 있습니다.

+0

그래, 모든 UIProxyObject와 CFDictionary와 CFHash 호출은 UINibDecoder를 지원합니다. 나는 UINibDecoder의 값을 출력하고 액세스 할 수 있는지 확인하기를 바라고 있습니다. 때로는 모두 .asm 코드입니다. 시도해 볼 때 다시보고하겠습니다. calmh와 Hoang에게 감사드립니다. – madchedar0

+0

나는 부서지기 전 까진 필사적으로 내 펜촉을 벗기 시작했다. 나는 그것이 비어있을 때까지 버튼, 라벨 등을 제거했다. 아직 충돌이 발생했습니다. 방금 내 "컨트롤러"개체를 제거하여 방금 첫 번째 응답자, 창, 파일 소유자 및 응용 프로그램 대리인을 확보했습니다. 이것은 효과가있다! 그래서 내가 사용하고 있던 컨트롤러 개체에 이상한 것이 있었을 것입니다. 나는 처음부터 (빈 화면)부터 시작하여 어떤 일이 일어나는지 살펴볼 것입니다. 내가 뭘 잘못했는지 파악한 후에는이 게시물을 업데이트 할 것입니다. – madchedar0

+0

나는 내 사용자 지정 컨트롤러 개체에서 처음부터 모든 것을 다시 작성했으며 지난 번 나를 죽이는 것을 우회했습니다. 내가 만든 모든 변경 사항을 컴파일하고 아이폰 시뮬를 실행하여 스스로 트립하지 않도록했습니다. 내 Controller 객체에 대한 연결이 잘못되어 있어야하고 다른 작업을 수행하고 있었다고 생각합니다. 그래서 xcode를 사용할 때뿐만 아니라 IB 레이아웃을 할 때 많은 교훈을 얻고 컴파일을 테스트합니다! – madchedar0

0

.xib 파일의 이름과 initByNibName 메소드의 이름이 같은지 확인하십시오. 아마도이 두 이름은 다를 수 있습니다.

0

나는 교사용 책에서 유사한 기본 iPhone 응용 프로그램을 위해이 문제를 해결했으며 "대신 앞에 @를 잘못 배치했다는 것을 깨달았습니다."- 야옹은 엉망인 것입니다 (아래). 오류 던질 정도였다.

animalSounds=[[NSArray alloc]initWithObjects: @"Oink","@Rawr",@"Ssss",@"Roof","@Meow",@"Honk",@"Squeak",nil];

내가 중단 점 및 NSLog 출력을 설정하는 매우 기본적인 방법을 사용 디버깅하려면, 내가 망쳐되었다 내가 사용하던 4 개 변수 알아낼 수를