2010-02-07 66 views
2

背景:EXC_BAD_ACCESS

我尝试在CS193P过程中的 “HelloPoly” 分配。 我已经创建了我的.xib文件和一个自定义的Controller类。

我没有充实任何方法 - 我只允许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方法是否通过放置断点来调用,以了解应用程序是否崩溃甚至bef矿石 – Nithin 2010-02-08 04:56:30

回答

3

它在NibDecoder中崩溃,即加载XIB文件时。您可能有一个对象或属性不存在或未初始化的引用。

+0

好的,所以所有的UIProxyObject和CFDictionary和CFHash调用都支持UINibDecoder。 我希望我能够设置休息/打印值UINibDecoder,看看它的访问。有时它是所有.asm代码。 当我有机会尝试这个时,我会报告回来。谢谢冷静和黄。 – madchedar0 2010-02-08 04:50:47

+0

我绝望了,开始移除我的笔尖,直到它停止崩溃。我删除了按钮,标签等,直到它是空白的。 它仍然坠毁!我刚刚删除了我的“控制器”对象,所以我只有我的第一个响应者,窗口,文件的所有者和我的应用程序委托。这工作! 因此,我使用的Controller对象一定是奇怪的。我要从头开始(空白视图),看看会发生什么。一旦我找出我做错了什么,我会更新这篇文章。 – madchedar0 2010-02-15 01:00:34

+0

我在我的自定义控制器对象中重新构建了所有东西,并且绕过了上次造成我的任何问题。 我做的每一个改变,我编译并运行在iPhone模拟器上,以确保我没有绊倒自己。我想我的Controller对象的连接必须是错误的,而且我还在做其他事情。 因此,学习经验教训是编译和测试了很多时,做IB布局...不只是当使用xcode! – madchedar0 2010-02-21 21:46:40

0

检查.xib文件的名称和initByNibName方法的名称(如果它们相同)。可能这两个名字是不同的。

0

我刚刚在一本教自己的书中解决了类似的基本iPhone应用程序的这个问题,并意识到我只是在一个“而不是在前面”之后错误地放置了一个@Meow是一个搞砸了的(下面)足以抛出错误:

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

要调试我用设置断点和的NSLog输出的超级基本方法,所以我可以找出我用的是4个变量被搞砸了