EXC_BAD_ACCESS 간단한 iPhone 앱 시작
-
19-09-2019 - |
문제
배경:
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
나는 다른 스레드 에서이 특별한 문제를 보지 못했지만, 내가 놓친다면 저를 단서 제발.
아이디어?
감사.
해결책
XIB 파일을로드 할 때는 Nibdecoder에서 충돌합니다. 아마도 존재하지 않거나 초기화되지 않은 객체 나 속성에 대한 참조가있을 것입니다.
다른 팁
.xib 파일의 이름과 ININTBYNIBNAME 메소드의 이름을 확인하십시오. 아마도이 두 이름은 다릅니다.
방금 Teach -Yourself 책에서 비슷한 기본 iPhone 앱을 위해 이것을 해결했고, "앞에서 대신 @ 이후에 @를 잘못 배치했다는 것을 깨달았습니다. 오류:
animalSounds=[[NSArray alloc]initWithObjects: @"Oink","@Rawr",@"Ssss",@"Roof","@Meow",@"Honk",@"Squeak",nil];
디버그를 위해 브레이크 포인트 및 NSLOG 출력을 설정하는 Super Basic 메소드를 사용하여 사용했던 4 가지 변수 중 어느 것이 나사로 나은지 알아낼 수있었습니다.