如果你有一个带有IBOutlet的storyboard / XIB连接到代码中相应的IBOutlet属性,然后你删除代码中的插座,你曾经崩溃了一个相当神秘的错误信息,结果是“这个类不是键值编码 - 符合关键<outlet_name>
“
这不是我的第一个Xcode竞技场,所以我习惯了这个消息。我看到它和事情“哦,废话,我有一个破坏的出口链接或用户定义的运行时属性指向无效的密钥名称”并去修复它。
但是,我的公司刚刚迁移到Xcode 9.1(我知道,我们应该是9.2,更不用说9.1了,但是我们有一个庞大的团队和一个巨大的混合Swift / Objective-C代码库,并且迁移我们的工具链充满了复杂性。)我刚刚发生了一个合并错误,其中一个现已解散的插座留在了故事板中。
当我运行应用程序并运行应该在我的故事板中显示此场景的代码路径时,我在main.m中遇到了崩溃,堆栈跟踪中没有任何内容,并且控制台中没有线索。只是SPLAT。
我浪费了2个小时跟踪这只小狗。
错误消息曾经是神秘的,但至少它给了你一个线索。现在看来你只是崩溃而没有解释。
Apple没有在Xcode 9+中删除此功能,我已经使用Xcode 9.1和Xcode 9.2进行了测试。
我认为有几种方法可以重现这个问题:
我建议你新建一个样本项目再次检查。如果问题仍然存在,欢迎截屏或示例项目。