Xcode 10:我们的项目导致 Interface builder 崩溃或无法持续渲染。在项目外部打开故事板时工作正常

Xcode 10: Our project causes Interface builder to crash or fail to render constantly. Works fine when storyboard is opened outside project

在过去的几个月里,Xcode 10 的 iOS 界面生成器一直存在巨大问题。

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

遇到的问题:

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

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

  3. 显示
  4. "A small gray square" 而不是我的视图/视图控制器。没有呈现任何视图。只是一个空白的灰色视图。

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

  6. 显示一个错误,提示 Interface Builder 已崩溃,要求查看日志。实际上查看 XCode 日志 - 没有任何意义,因为它是外星语言...

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

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

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

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

更多背景信息:

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

  2. 没有工作区。只有正在使用的项目。 (未使用椰子足类)

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

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

  5. 我们只是使用约束。默认情况下,所有故事板上的特征变体都是开启的,但我们不使用它们。

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

在 Xcode 7 或 8 中创建的旧项目有同样的问题。我的解决方案是删除所有 VC 视图并重新创建

有时这是由于您正在工作的 storyboard/xib 上的 @IBDesignable 造成的。尝试关注@IBDesignable 视图并转到编辑器-> 调试选定视图并跟踪堆栈跟踪输出。通常它会给你足够的洞察力来继续调试并找出到底是什么导致了问题。

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

我在将 Interface Builder 从任何 iPhone 设备切换到任何 iPad 设备时遇到了类似的问题 - Xcode 10 刚刚崩溃。在 iPhone 设备之间切换没问题。

结果日志表明 UILabel 上的 'setAttributeText' 存在问题。我的一个设置为 Attributed(相对于普通)的 UILabel 将对齐设置为 Align Natural“---”。将其设置为对齐中心修复了崩溃问题,切换到 iPad 设备现在又可以正常工作了。