0

当我尝试运行我的应用程序时出现此错误:

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,但我想避免这种丑陋的 hack。

编辑:奇怪的是,当我在设备而不是模拟器上运行代码时,没有引发异常。此外,当我使用一个简单的笔尖MyViewController(不包含工具栏)时,异常就消失了。我正在使用 git,当我返回运行以前的代码提交时,MyViewController甚至有一个工具栏或一个 nib,这些奇怪的也给出了异常。该代码曾经运行良好。我确实认为这个异常与 Xcode 和模拟器有关,以及当我从项目中删除不需要的 nib 时的某种遗留状态。

4

1 回答 1

1

Xcode 是一个 IDE。当您的应用程序运行时,它不是 Xcode 向您的视图控制器询问工具栏。

有两种方法可以解决此问题:

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

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

于 2010-04-30T03:34:40.190 回答