如果您有一个故事板/XIB,其 IBOutlet 连接到代码中相应的 IBOutlet 属性,然后您在代码中删除了该插座,那么您过去常常崩溃并显示一条相当神秘的错误消息,大意是“此类不是键值编码- 符合密钥<outlet_name>
“
这不是我的第一个 Xcode 牛仔竞技表演,所以我已经习惯了那个信息。我看到了“哦,废话,我的出口链接损坏或用户定义的运行时属性指向无效的键名”,然后去修复它。
但是,我的公司刚刚迁移到 Xcode 9.1(我知道,我们应该使用 9.2,更不用说 9.1,但是我们有一个庞大的团队和一个庞大的 Swift/Objective-C 混合代码库,迁移我们的工具链充满了复杂性。)我刚刚遇到了一个合并错误,在 Storyboard 中留下了一个现已失效的插座。
当我运行应用程序并练习应该在我的故事板中显示此场景的代码路径时,我在 main.m 中遇到了崩溃,堆栈跟踪中没有任何内容,控制台中也没有任何线索。只是一击。
我浪费了 2 个小时来追踪这只小狗。
错误消息曾经像 h**l 一样神秘,但至少它给了你一个线索。现在看来您只是崩溃而没有任何解释。