为啥 Xcode 7.2 崩溃“无法实例化名为 IBNSLayoutConstraint 的类”?

Posted

技术标签:

【中文标题】为啥 Xcode 7.2 崩溃“无法实例化名为 IBNSLayoutConstraint 的类”?【英文标题】:why Xcode 7.2 crash 'Could not instantiate class named IBNSLayoutConstraint'?为什么 Xcode 7.2 崩溃“无法实例化名为 IBNSLayoutConstraint 的类”? 【发布时间】:2016-03-16 03:13:55 【问题描述】:

*** 由于未捕获的异常而终止应用程序 'NSInvalidUnarchiveOperationException',原因:'无法实例化 类名为 IBNSLayoutConstraint'

我只是将 Xcode 更新到 7.2,然后我开始检查一切是否正常。但我有这个错误,它崩溃了。我挖掘这个问题,每个人都说“确保你没有为未安装的视图安装任何约束。”但我没有任何卸载的约束。而且我没有任何 NSLayoutConstraint 网点。 非常感谢。

【问题讨论】:

Could not instantiate class named IBNSLayoutConstraint的可能重复 【参考方案1】:

选择 Storyboard Disable Size 类解决我的问题。希望这个能对您有所帮助!谢谢 构建项目后,您可以再次启用大小类。

【讨论】:

您是否也重新启用了尺寸等级?对于大多数应用程序,您绝对应该使用 size classes,因此将其关闭可能是错误的答案或表明应该提交的错误。 你是一个救命稻草,但我想知道这是否是随机发生的,这就是解决方案,我们是否必须在发送到商店之前将此解决方案应用于每个故事板? @DanielJ 对我来说,在我重新开启尺码课程后就好了;确实似乎是一个错误 禁用和运行解决了这个问题。然后我能够重新启用尺寸等级,并且问题保持不变。 这会从情节提要 xml 中删除(禁用和重新启用)一些 <constraint> 条目,但找不到任何负面影响,应用程序继续正常工作。【参考方案2】:

在我的情况下,我有“padView”,它没有安装在任何/任何尺寸类别中,而是安装在常规/常规尺寸类别中,但它的子视图安装在所有尺寸类别中。

“PadView”设置:

“PadView”子视图设置:

当我将“PadView”子视图安装设置更改为与“PadView”设置相同时,我的问题得到了解决。

【讨论】:

您的回答和@Kayron Cabral 下面的回答似乎指向同一个问题。看来,您的两种解决方案都是等效的。【参考方案3】:

您可能使用 InterfaceBuilder Storyboard 进行本地化。您还应该考虑它们并删除其中的非活动约束或使用 Localizable Strings 进行本地化。

您也可以查看this的答案。

【讨论】:

是的。不幸的是,我错过了。我有两个故事板。我只是改变了一些约束只有一个。感谢您的回答。它帮助我解决了这个问题。【参考方案4】:

我在 IB 的主视图中有一个视图已停用(未安装)。我删除了它,还删除了所有约束而不参考 IB。并为我工作。

【讨论】:

您的回答和@Evgeny Mikhaylov 下面的回答似乎指向同一个问题。看来,您的两种解决方案都是等效的。【参考方案5】:

我有一个为 iPad 设置自定义尺寸类的应用程序,因此应用程序将纵向和横向方向识别为常规/紧凑和紧凑/常规特征。

因此,当我仅将一个视图安装为 R/C Installed 和 C/R Installed 时,当我升级到 7.2 final 时出现崩溃:“无法实例化名为 IBNSLayoutConstraint 的类”。

修复很简单:为 Any/Any 添加视图安装:“已安装”

通过比较 Storyboard 源代码,似乎在修复后删除了此行:

// y4d-LA-PwQ 是视图特定 ID

【讨论】:

是的。你说的对。通常我在未安装情节提要元素时使用此方法。这是在情节提要中安装所有元素的最简单方法。谢谢 不客气。另外,如果有帮助,您可以投票。【参考方案6】:

尝试检查“使用大小类”:

【讨论】:

【参考方案7】:

不应用上述答案中提到的hackery很容易解决。将您的 IB 切换到任何/任何并查看每个顶视图的子视图。如果您发现一个未安装的超级视图和它的子视图,请在任何/任何中禁用此已安装的子视图,以便超级视图和子视图具有相同的安装状态。

【讨论】:

【参考方案8】:

当我的一个应用加载我的 XIB 时,我收到了“无法实例化名为 IBNSLayoutContraint 的类”错误,我确实遇到了类似的问题。它最终成为我的约束之一,它的属性上有一个复选标记。这类似于“从构建中删除”。我取消选中它并解决了我的错误。我认为这不能解决您的问题。

【讨论】:

感谢您的回答约翰。但我检查了所有约束占位符。所有这些都未选中。【参考方案9】:

尝试删除冲突的约束并重新添加它;)

【讨论】:

以上是关于为啥 Xcode 7.2 崩溃“无法实例化名为 IBNSLayoutConstraint 的类”?的主要内容,如果未能解决你的问题,请参考以下文章

XCode 7.2 在协议扩展实现功能不正确时崩溃

为啥自动布局在 xcode 7.2 中不再起作用?

斯威夫特 2.1,xcode 7.2。简单的新手关于为啥它在 Playground 中有效但在应用程序中无效

使用 7.3 后的 Xcode 7.2 - 没有列出模拟器

为啥 Testflight 的崩溃日志在 Xcode 中没有符号化?

为啥我的弹出框在 iPhone 6 Plus 上的 iOS 8.1 中崩溃? iOS 8 工作(实际上是 Xcode 6.0 到 6.1 的错误)