2010-04-29 60 views
0

我得到这个错误,当我尝试运行我的应用程序:如何追踪KVC异常的来源:该类不是关键值编码兼容的关键工具栏?

2010-04-29 13:49:01.355 MyApp[56123:207] *** Terminating app due to uncaught 
exception 'NSUnknownKeyException', reason: '[<MyViewController 0x5112b10> 
setValue:forUndefinedKey:]: this class is not key value coding-compliant for 
the key toolbar.' 

MyViewController曾经有一个IBOutlet称为“工具栏”即连接到UIToolbar对象的笔尖。我决定不再需要工具栏或笔尖,因此我将它们从项目中移除。但Xcode似乎仍然想参考'工具栏'。

如果我不再使用笔尖,那么对工具栏的引用可能在哪里?我可以合成一个虚拟的“工具栏”属性来安抚Xcode,但我想避免这种丑陋的黑客攻击。

编辑:奇怪的是,当我在设备上而不是在模拟器上运行代码时,异常没有引发。另外,当我使用MyViewController(其中不包含工具栏)的普通笔尖时,异常就消失了。我使用git,当我回到之前运行我以前的代码以前的提交,甚至有一个工具栏或一个笔尖,那些奇怪地也给出了例外。该代码曾经运行良好。我认为这个例外与Xcode和模拟器有关,还有一些从我从项目中移除不需要的笔尖的状态。

回答

1

Xcode是一个IDE。当你的应用运行时,它不是要求你的视图控制器为工具栏。

有两种方法来解决此:

  1. objc_exception_throw设置一个断点,然后运行调试器下您的应用程序。
  2. -[NSObject(NSKeyValueCoding) valueForUndefinedKey:]上设置断点,然后在调试器下运行您的应用程序。

无论采用哪种方式,调试器都会在发生异常时中断(中断)您的应用程序。查看堆栈跟踪以查看发送了哪些消息。

+0

谢谢彼得。我会这样做,但我该如何设置这些断点?我不会在我的代码中明确地调用这些函数。 – sam 2010-05-01 17:30:11

+0

使用Xcode中的断点窗口。 – 2010-05-01 19:00:52

相关问题