0

如果您有一个故事板/XIB,其 IBOutlet 连接到代码中相应的 IBOutlet 属性,然后您在代码中删除了该插座,那么您过去常常崩溃并显示一条相当神秘的错误消息,大意是“此类不是键值编码- 符合密钥<outlet_name>

这不是我的第一个 Xcode 牛仔竞技表演,所以我已经习惯了那个信息。我看到了“哦,废话,我的出口链接损坏或用户定义的运行时属性指向无效的键名”,然后去修复它。

但是,我的公司刚刚迁移到 Xcode 9.1(我知道,我们应该使用 9.2,更不用说 9.1,但是我们有一个庞大的团队和一个庞大的 Swift/Objective-C 混合代码库,迁移我们的工具链充满了复杂性。)我刚刚遇到了一个合并错误,在 Storyboard 中留下了一个现已失效的插座。

当我运行应用程序并练习应该在我的故事板中显示此场景的代码路径时,我在 main.m 中遇到了崩溃,堆栈跟踪中没有任何内容,控制台中也没有任何线索。只是一击。

我浪费了 2 个小时来追踪这只小狗。

错误消息曾经像 h**l 一样神秘,但至少它给了你一个线索。现在看来您只是崩溃而没有任何解释。

4

1 回答 1

0

Apple 没有在 Xcode 9+ 中删除此功能,我已经使用 Xcode 9.1 和 Xcode 9.2 进行了测试。

我认为有几种方法可以重现此问题:

  1. 使用控制台过滤器可能会导致某些日志在那一刻消失。清洁过滤器可以将它们带回来。
  2. 正如 Rob 在问题评论中所说,使用异常断点。继续执行或禁用断点,会出现未捕获的异常错误。

我建议您新建一个示例项目以再次检查它。如果问题仍然存在,欢迎截图或示例项目。

于 2017-12-27T09:03:28.193 回答