以下情况:我有一个基于文档的应用程序。默认情况下,当我打开应用程序时,它只在屏幕顶部显示菜单。然后我点击file->new,它打开了一个全新的document.xib界面。在我的主电脑上工作正常。但是在我运行 10.6.8 的第二台电脑上,应用程序一运行就崩溃了。 (代码是用正确的目标编译的......)
这个应用程序在我什至在顶部看到主菜单之前就崩溃了。崩溃的原因是否仍然在文档的 xib 文件中?还是很可能在文档部分之外的代码中?我的意思是:代码是在应用程序启动时完全检查的,还是当它到达导致它的代码时它是否会导致崩溃?
谢谢
编辑
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 ??? 000000000000000000 0 + 0
1 com.apple.AppKit 0x0000000100def22e -[NSCustomObject nibInstantiate] + 416
2 com.apple.AppKit 0x0000000100def01b -[NSIBObjectData instantiateObject:] + 259
3 com.apple.AppKit 0x0000000100dee406 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 336
4 com.apple.AppKit 0x0000000100deca91 loadNib + 226
5 com.apple.AppKit 0x0000000100debfa1 +[NSBundle(NSNibLoading)_loadNibFile:nameTable:withZone:ownerBundle:] + 248
6 com.apple.AppKit 0x0000000100debdd9 +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 326
7 com.apple.AppKit 0x0000000100de935b NSApplicationMain + 279
8 mad-sharky.com.Stockuploader 0x0000000100001194 0x100000000 + 4500
最佳答案
问题不在于 XIB 文件,而在于所述文件中被错误实例化的对象之一。对象的某些原因导致它是 -initWithCoder:
方法失败。看来您可能没有在所述方法中调用 super,而只是返回 self,这是不允许的。
另一种可能性是你有一个“幽灵导出”。有时,当一个 IBOutlet 被创建和链接时,声明它的那段代码被删除,IB 不会取消链接导出,并且 NSCoder 试图解除一个 nil 导出。
关于objective-c - 在哪里寻找错误。文档、应用程序委托(delegate)或两者兼而有之?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15462107/