首页 > 解决方案 > Xcode 10:我们的项目导致 Interface builder 经常崩溃或无法渲染。在项目外部打开故事板时工作正常

问题描述

在过去的几个月里,我们在使用 Xcode 10 的 iOS 界面构建器时遇到了巨大的问题。

这些问题仅在一些编辑操作后出现。需要重新启动 xcode 才能使它们消失。在某些情况下,当在情节提要中切换不同设备尺寸时,它们会消失。

遇到的问题:

  1. Xcode 在编辑故事板时意外崩溃。

  2. 约束停止更新。约束警告停止更新。(没有点击黄色警告按钮的选项 - 更新约束)。

  3. 显示“一个小灰色方块”而不是我的视图/视图控制器。不呈现视图。只是一个空白的灰色视图。

  4. 控制器上没有呈现子视图 - 只是灰色背景。

  5. 显示接口生成器已崩溃的错误,要求查看日志。实际上查看 XCode 日志 - 没有意义,因为它是外星语言......

但是,我们找到了解决方法!

我们关闭项目和工作区。我们在 XCode 中自行打开故事板。(项目外)。

因此,您需要做的就是:确保通过项目设置所需的 IBOutlets 和 IBAction,然后进行布局调整,只需打开独立的故事板,关闭项目即可。

但是现在这提出了一个问题:项目中的某些设置显然会导致界面构建器和故事板编辑出现问题。如何进一步诊断问题,并找出导致 Interface builder 失败的项目问题?

更多背景信息:

  1. 我们的项目中有一个框架引用,它有自己的 Bundle ID。它有很多故事板。它作为子项目引用引用到应用程序项目。

  2. 没有工作区。只有正在使用的项目。(没有使用可可足类动物)

  3. 我们的故事板很小:每个故事板只有一个控制器。所有导航都通过代码进行管理。(没有转场)。所以故事板的复杂性不是问题。

  4. 我们不使用 IBDesignables 或任何高级功能。

  5. 我们只使用约束。默认情况下,所有情节提要上的特征变体都是打开的,但我们不使用它们。

  6. 我们从我们自己的框架中引用其他 .framework 文件。其中一些是胖框架。

标签: swiftxcodestoryboardinterface-builder

解决方案


有时这是由于您正在工作的故事板/xib 上的@IBDesignable。尝试专注于 @IBDesignable 视图并转到 Editor->Debug Selected Views 并按照堆栈跟踪输出。通常它会给你足够的洞察力来继续调试并找出究竟是什么导致了问题。

对于我们的项目,它是 @IBDesignable 类试图使用直到运行时才初始化的东西,并且发生断言失败,因此出现错误。


推荐阅读