Xcode 6 GM在选择主故事板或xib时崩溃

16

我刚下载了Xcode 6 GM版本,但每次选择主故事板(和特定的xib文件)时,Xcode就会崩溃。

向苹果发送错误报告后,其中包含以下信息:

  

/SourceCache/IDEInterfaceBuilderCocoaTouch/IDEInterfaceBuilderCocoaTouch-6238/InterfaceBuilder/Documents/IBCocoaTouchPlatform.m:531中出现断言错误   细节:返回的状态计算结果不是IBMarshallingResult,而是{

有没有其他人遇到同样的问题?


2
我也遇到了同样的问题!非常令人沮丧! - mikemike396
1
它是崩溃了还是变得无响应了?我遇到了后者。 - Brandon
1
@BrandonRoth的长时间无响应导致XCode几乎每次都崩溃。 - abinop
1
我的电脑变得无响应了。我还没有让它闲置足够长的时间来看是否会崩溃。更新Java版本似乎没有帮助。 - mikemike396
1
我们所有旧的故事板都有同样的问题。 - g_pass
显示剩余3条评论
13个回答

23

我听说这可能是一个自动布局的问题,因此我尝试手动禁用它,结果奏效了!

如果你右键点击storyboard文件,选择“以源代码形式打开”,并移除useAutolayout="YES",然后清理、重新编译,就应该能够顺利打开了。


这对我也起作用了,谢谢@Edgar Rocha Carvalho。 - Manolo
实际上应该删除的是 useAutolayout="YES" :) - tong
对我有用,谢谢。 1- 右键点击Storyboard文件 2- 点击打开源代码选项 3- 找到useAutolayout="YES"并将其更改为NO 完成 - fs_tigre
8
大家好 - 这个答案是有效的,但它会不会因为删除自动布局而带来一些疯狂的问题呢?我们如何使用Xcode来创建自适应的UI界面等等?除非你关闭它,启动Xcode,让Storyboard工作然后再把它打开(设为Yes)? - amitsbajaj
这个问题让我很疯狂,而且我不想关闭自动布局,因为我打算继续使用它。最后,我点击了“添加缺失的约束条件”。现在它不再崩溃了。 - Ryan Caskey

15

这给我造成了很大的麻烦,重新创建storyboard不是一个选项。我通过在storyboard上按住ctrl /右键并执行

"打开方式" > "源代码"

然后我进行了一些小改动,撤销了它并重新保存了文件。然后我执行

"打开方式" > "界面构建器 - Storyboard"

这样就可以打开而不会导致Xcode崩溃。


3
太美了!这应该是被采纳的答案! - Ravi
它对我也起作用,但每次打开我的主故事板时都需要这样做,否则XC会崩溃。所以这个答案对我来说不是长期的解决方法 :-/ - Maxime T
它适用于我在Mac OS X 10.11.1上的Xcode 7.1,并且通过在源代码模式下添加字符、保存、撤销和保存,然后返回到可视化模式,不再崩溃。 - zeeawan
另一个崩溃被以不同的方式解决了,所以我将在这里添加一个单独的答案。 - zeeawan

8

解决方法如下:

  1. 打开Finder窗口并导航至您的项目。
  2. 右键单击.xcodeproj文件(它实际上是一个包)。
  3. 选择“显示包内容”。
  4. 会弹出一个新窗口。
  5. 删除名为xcuserdata的文件夹。

如何避免这种情况发生:

一旦添加到.gitignore中,必须执行以下命令:

git rm --cached ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/yourUserName.xcuserdatad/UserInterfaceState.xcuserstate

git commit -m "Removing file thats driving me insane"

3

(1) 你是否清理并重新构建了项目?

(2) 你尝试过清空xcuserdata文件夹吗?该文件夹包含ui状态,可能是出现此问题的原因,特别是在xcode更新时。当你右键单击.xcodeproj“文件”并选择“显示包内容”时,xcuserdata文件夹可以在项目目录中找到。关闭Xcode,清空xcuserdata文件夹,然后重新打开.xcodeproj文件。

希望这两个方法中的一个能帮到你 :)


在这里发现了另一个问题的原因:http://stackoverflow.com/questions/9109571/xcode-wont-compile-ios-apps-crashes-when-xib-or-storyboard-files-are-opened?rq=1 如果您使用TotalFinder,这可能是问题所在。 - Eike
删除.xcuserdata文件夹对我来说有效-只有在查看storyboard时才会出现这个崩溃问题,而不是xib。 - Evan R
清理xcuserdata对我来说是长期有效的。自从我更改了iOS应用程序的名称以来,这个问题经常发生。 - Maxime T

1
如果人们使用多个选项卡可能会有问题。当相同的故事板在多个选项卡中打开时,我的Xcode 6.0.1会变得无响应...

0

当我在Main.storyboard上拖动按钮以创建IBOutlet时,我的Xcode崩溃了。

我发现这是由一个构建设置项目引起的——[Objective-C自动引用计数]。

如果将其设置为“否”,则Xcode在创建IBOutlet时会崩溃。

OS X Version: Yosemite 10.10.1 

Xcode Version: 6.1.1 (6A2008a)

希望这可以帮到你。

0

解决这个问题的一个方法是在Xcode 5中打开xib并让它更改一系列设置,然后再在Xcode 6中打开。


0

我刚刚经历了同样的问题。原来是由于 git 合并造成故事板中存在重复的 UILabel。显然,如果两个 UI 元素具有相同的内部 ID,Xcode 就会崩溃。

类似于 andrew-burke 的方法,我的查找问题的方法涉及通过 git 追踪问题更改。步骤:

  • 迭代地向后遍历 git 历史记录,检出每个提交,直到找到第一个不会崩溃 Xcode 的故事板为止。
  • 一旦您找到开始崩溃的提交,请检出 HEAD,并迭代地还原问题提交中的故事板更改。继续缩小范围,直到您找到一个将导致崩溃的 UI 元素或一行代码。
  • 永久撤消该责任变更并重新启动 Xcode。再次打开故事板,您可能会收到有关内部不一致性的警告。同意 Xcode 所做的建议更改,但请审核它们。
  • 如有必要,您现在可以尝试从头开始重新创建 UI 元素或更改之前引起问题的代码。

0
这是来自于早期的Xcode版本,还是来自于以前的Xcode 6发布之一?如果是后者,那么解决方案将是重新创建它。
您可以尝试查看故事板文件的内部,并找出它是否是一个有效的文档——该文件基于XML,因此您应该能够看到是否有任何缺少元素或由合并冲突引入的问题,例如。您还可以尝试删除特定屏幕,以查看是否解决了您的问题——也许问题与特定屏幕有关。
我还建议检查您的对象是否已实现IBDesignable属性,以及是否在故事板中使用它;如果是,则可能是NSCoder无法从文件中恢复对象的故障。

0
我在从Xcode 5升级到6.0.1后遇到了同样的问题。试图加载我的大型而复杂的iPad故事板会冻结Xcode,弹出“彩色齿轮”,最终崩溃。有时它也会在构建过程中显示错误,提到缺少OIDs。
我最终通过Git回滚了Storyboard文件(通过命令行,因为Xcode无法让我走得更远),一直回滚到最初的模板版本。我清理了项目并重新构建它,然后故事板正确加载了。
然后,我逐个提交地前进,每次都清理和构建。我期望会有一个点再次发生故障-但是我一直到达最近的提交而没有任何冻结。
然而,当我尝试跳过几周时,我又遇到了冻结和崩溃。
我想知道6.0.1中新的Storyboard编辑器是否只需要以较小的步骤(以及缓存?)构建其内部表示,而不是完整复杂文件的巨大飞跃。
这个回滚/前进/重建过程对我来说大约需要45分钟,但比我重新构建这个故事板要节省很多时间。希望这能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接