选择主情节提要或 xib 时 Xcode 6 GM 崩溃
Posted
技术标签:
【中文标题】选择主情节提要或 xib 时 Xcode 6 GM 崩溃【英文标题】:Xcode 6 GM crashes when selecting the main storyboard or a xib 【发布时间】:2014-11-05 09:17:11 【问题描述】:我刚刚下载了 Xcode 6 GM,每次选择主情节提要(和特定的 xib)时,Xcode 都会崩溃。
要发送给 Apple 的错误包含以下信息
断言失败 /SourceCache/IDEInterfaceBuilderCocoaTouch/IDEInterfaceBuilderCocoaTouch-6238/InterfaceBuilder/Documents/IBCocoaTouchPlatform.m:531 详细信息:返回的状态计算结果不是 IBMarshallingResult,它是
有人遇到同样的问题吗?
【问题讨论】:
同样的问题!非常沮丧! 它是崩溃还是没有响应?我正在经历后者。 @BrandonRoth 长时间无响应导致 XCode 几乎每次都崩溃 我的没有反应。没有离开足够长的时间来查看它是否崩溃。更新下面的 Java 版本似乎没有帮助。 我们所有的旧故事板都存在同样的问题 【参考方案1】:我听说这可能是自动布局的问题,所以我尝试手动禁用它并成功了!
如果你在storyboard文件上右击,作为源代码打开,去掉useAutolayout="YES",然后clean,rebuild,应该可以正常打开了。
【讨论】:
这对我也有用,谢谢@Edgar Rocha Carvalho。 实际上应该删除的确切是 useAutolayout="YES" :) 为我工作,谢谢。 1-右键单击故事板文件 2-单击作为源代码打开选项 3-找到 useAutolayout="YES" 并将其更改为 NO Done 大家好 - 这个答案确实有效。但它不会在删除 AutoLayout 时产生一些疯狂的问题。然后我们将如何使用 Xcode 来创建自适应 UI 等?除非,你把它关掉,启动 Xcode,让故事板工作,然后再打开它? (转为是)? 这个问题让我发疯了,我不想关闭自动布局,因为我打算使用它。最后我点击“添加缺少的约束”。它不再崩溃。【参考方案2】:这给我带来了很多麻烦,并且无法重新创建故事板。我通过 ctrl/右键单击情节提要并做
“打开方式”>“源代码”
然后我做了一个小改动,撤消了它并重新保存了文件。然后我做了
“打开方式”>“界面生成器 - 故事板”
它打开时 Xcode 没有崩溃。
【讨论】:
这太美了!这应该是公认的答案! 它也对我有用,但是当我打开我的主故事板时我必须定期这样做,这会使 XC 崩溃。所以这个答案对我来说不是一个长期的解决方案:-/ 它适用于 Mac OS X 10.11.1 上的 Xcode 7.1,并且通过添加字符、保存、撤消和保存源代码模式然后返回可视模式不再出现崩溃。 另一个崩溃以不同的方式解决了,所以我将在这里添加一个单独的答案。【参考方案3】:解决这个问题:
-
打开 Finder 窗口并导航到您的项目
右键单击 .xcodeproj 文件(实际上是一个包)
选择显示包装内容
出现一个新窗口
删除名为 xcuserdata 的文件夹
以后如何避免这种情况: 添加到 .gitignore 后,您必须发出以下命令:
git rm --cached ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/yourUserName.xcuserdatad/UserInterfaceState.xcuserstate
git commit -m "Removing file thats driving me insane"
【讨论】:
【参考方案4】:(1) 您是否清理并重建了项目?
(2) 您是否尝试过清空 xcuserdata 文件夹?该文件夹包含 ui 状态,可能是导致此类问题的原因,尤其是在更新 xcode 时。当您右键单击 .xcodeproj“文件”并选择“显示包内容”时,可以在项目目录中找到 xcuserdata 文件夹。关闭 Xcode,清空 xcuserdata 文件夹并重新打开 .xcodeproj 文件。
希望其中之一有所帮助:)
【讨论】:
在这里发现另一个问题原因:***.com/questions/9109571/… 如果您使用 TotalFinder,这可能是问题所在。 删除 .xcuserdata 文件夹对我有用——仅在查看故事板时出现此崩溃问题;不是 xib。 清理 xcuserdata 似乎对我来说是长期有效的。自从我更改了我的 ios 应用程序的名称后,这个问题经常发生。【参考方案5】:如果人们使用多个标签,这可能是个问题。每当在多个选项卡中打开同一个故事板时,我的 Xcode 6.0.1 就会变得无响应...
【讨论】:
【参考方案6】:这是来自早期版本的 Xcode,还是来自早期 Xcode 6 版本之一?如果是后者,那么解决方案就是重新创建它。
您也许可以查看情节提要文件内部并确定它是否是有效文档 - 该文件是基于 XML 的,因此您应该能够查看是否有任何缺少的元素或合并冲突引入的问题,例如。您也可以尝试删除特定屏幕,看看是否能解决您的问题 - 也许问题与某个特定屏幕有关。
我还建议检查您的对象是否实现了 IBDesignable 属性,以及您是否在情节提要中使用了该属性;如果是这样,可能是 NSCoder 无法从文件中恢复对象。
【讨论】:
【参考方案7】:从 Xcode 5 升级到 6.0.1 后,我一直在努力解决同样的问题。尝试加载我庞大而复杂的 iPad 故事板会冻结 Xcode,调出死亡风车,并最终崩溃。有时它也会在构建时显示错误,提到缺少 OID。
我最终在 Git 中将 Storyboard 文件回滚(通过命令行,因为 Xcode 不会让我走那么远)一直回滚到第一个直接来自模板的版本。我清理了项目并重建了它,并且故事板正确加载。
然后我每次都通过提交、清理和构建来及时提交。我预计我会再次出现问题 - 但我一直到最近的提交而没有任何冻结。
但是,当我尝试提前数周时,我再次陷入僵局并崩溃。
我想知道 6.0.1 中的新 Storyboard 编辑器是否只需要以更小的简单步骤构建其内部表示(和缓存?),而不是整个复杂文件的巨大飞跃。
这个回滚/前滚/重建过程对我来说大约需要 45 分钟,但这比我重建这个故事板所需的时间要少得多。希望对您有所帮助。
【讨论】:
【参考方案8】:我刚刚经历了同样的事情。由于 git 合并,它原来是情节提要中的重复 UILabel。显然,如果两个 UI 元素具有相同的内部 ID,Xcode 将会崩溃。
有点类似于 andrew-burke 的方法,我查找负责任问题的方法涉及通过 git 跟踪问题更改。步骤:
迭代地倒退 git 历史,检查每个提交,直到找到第一个不会导致 Xcode 崩溃的故事板。 一旦您的提交开始崩溃,请检查 HEAD 并迭代还原问题提交中的情节提要更改。继续缩小范围,直到有一个 UI 元素或一行会导致崩溃。 永久还原负责的更改并重新启动 Xcode。再次打开情节提要,您可能会收到有关内部不一致的警告。同意 Xcode 提出的更改建议,但请查看它们。 如有必要,您现在可以尝试重新创建之前导致问题的 UI 元素或更改。【讨论】:
【参考方案9】:当我在 Main.storyboard
上拖动一个按钮以创建 IBOutlet
时,我的 Xcode 崩溃了。
我发现它是由构建设置项引起的——[Objective-C 自动引用计数]。
如果设置为“否”,Xcode 将在创建 IBOutlet 时崩溃。
OS X Version: Yosemite 10.10.1
Xcode Version: 6.1.1 (6A2008a)
希望这会有所帮助。
【讨论】:
【参考方案10】:什么对我有用,仍在使用 AutoLayout
-
将故事板作为源代码打开
将 useAutolayout="YES" 编辑为 useAutolayout="NO"
关闭源代码
以 Interface Builder - Storyboard 的形式打开故事板
这是最重要的一步:在文件检查器视图(左窗格)中选中“使用自动布局”
完成。
【讨论】:
【参考方案11】:Mac OS X 10.11.1 上的 Xcode 7.1 崩溃,通过右键单击 xcode 图标打开相同的项目使其再次崩溃。然后我右击 xcode 图标并从最近的列表中打开了一些其他项目,然后打开了从 xcode 的菜单最近项目中崩溃的同一个项目并且它没有崩溃。
【讨论】:
【参考方案12】:一个解决方案是在 Xcode 5 中打开 xib 并让它更改一堆设置。然后在 Xcode 6 中打开。
【讨论】:
【参考方案13】:我在 Xcode 8 上遇到了这个问题,我能够
将我损坏的情节提要更改保存在 git 分支上。 切换到 在故事板获得之前,不同的分支恢复到较旧的提交 损坏的 在 Xcode 中查看故事板文件 切换回分支 损坏的情节提要,并且 Xcode 在仍然查看 故事板文件【讨论】:
以上是关于选择主情节提要或 xib 时 Xcode 6 GM 崩溃的主要内容,如果未能解决你的问题,请参考以下文章
为啥 XCode 4 在使用情节提要时不创建 XIB 文件?
使用情节提要的 Xcode 6.1 OSX 应用程序不呈现窗口或菜单栏