打开故事板时如何防止 XCode5 挂起/沙滩球?

Posted

技术标签:

【中文标题】打开故事板时如何防止 XCode5 挂起/沙滩球?【英文标题】:How to prevent XCode5 from hanging/beachballing when opening a storyboard? 【发布时间】:2013-10-01 23:43:09 【问题描述】:

我正在开发我在 Xcode 4.6 中使用故事板创建的游戏。几周前,我在 Xcode5 中打开它,它运行良好。我被要求升级情节提要,它工作正常。它不是一个复杂的故事板,只有 4 个场景和所有标准的东西。今天我进去尝试再次打开它,xcode 挂起和沙滩球。我必须强制退出它,我确实得到了一个非常大的报告,我已将其保存在一个文本文件中,但在此处发布太长了。

我什至如何更具体地找出导致问题的原因以便询问或搜索答案?

我尝试过的事情: 我已禁用源代码管理 我无法选择故事板以查看 IB 文档在版本中打开,因为它挂起。

我认为这是崩溃报告的相关部分:

异常类型:EXC_CRASH (SIGABRT) 异常代码: 0x00000000000000000, 0x0000000000000000

应用程序特定信息:ProductBuildVersion:5A1413 断言失败 /SourceCache/IDEInterfaceBuilderCocoaTouch/IDEInterfaceBuilderCocoaTouch-3742/IBPlugin/Utilities/IBObjectMarshalling.m:670 详细信息:无法为 IBLayoutConstraint 运行一次拍摄请求, IBUIButton、IBUILabel、IBUITextField、IBUIView 和 IBUIViewController。界面生成器遇到错误 与 ios 模拟器通信。如果您选择提交崩溃 报告或雷达此问题,请检查 Console.app 是否崩溃 “Interface Builder Cocoa Touch Tool”的报告,包括他们的 崩溃报告中的内容。异常名称:操作无法 完成。 (IBMessageChannelErrorDomain 错误1。)异常原因: (null) 异常回溯:(null) 异常信息: IBUnderlyingError = "Error Domain=IBMessageChannelErrorDomain Code=1 \"操作无法\U2019完成。 (IBMessageChannelErrorDomain 错误 1.)\""; 功能:无效 IBAssertMarshallingFailure(NSString *_strong, NSString *_strong) 主题:name = (null), num = 1 提示: 无

【问题讨论】:

我不明白为什么有人投票决定关闭它。我已经检查过,这与 SO 中的其他问题不同。如果你认为它应该被关闭,因为它是重复的,发布重复的链接。 【参考方案1】:

您可能必须在情节提要中手动禁用自动布局。右键单击情节提要 -> 打开为 -> 源代码。找到 useAutolayout="YES" 并将其更改为 useAutolayout="NO"。

这可能仅适用于 Mavericks OS 和 XCode 5.0.2。 XCode 5.0.2 有几个“偶尔挂起”的错误修复。

【讨论】:

【参考方案2】:

嗯,这就是我所做的。

    我在 TextEdit 中从 Finder 中打开 Storyboard 文件,看到 Autolayout 属性并决定将其设置为 NO。我这样做是因为我记得浏览崩溃报告时看到了一些关于约束的内容。

    然后我从 Finder 打开 Storyboard,但这次是在 Xcode5 中。它打开了故事板场景,但所有场景几乎都是空白的。这意味着我看不到最初存在的任何控件。我认为这是由于删除了自动布局。所以我将密钥useAutolayout="YES" 重新添加到TextEdit 的xml 中。然后我再次在 Xcode5 中打开 Storyboard 文件,它仍然是空白的。

    然后我决定也许我需要在 XCode5 中打开整个项目以查看控件是否仍然存在。我做到了,但我仍然没有看到控件,但在场景导航器中我可以展开节点并且这些控件似乎在那里。

    最后我单独解决了每个 AL 问题,现在情节提要项目重新出现了。

【讨论】:

以上是关于打开故事板时如何防止 XCode5 挂起/沙滩球?的主要内容,如果未能解决你的问题,请参考以下文章

我在使用故事板时如何删除内容?

在多个情节提要上维护导航栏?

即使所有退出事件成功触发,Electron 应用程序也会挂起

在从一个故事板解雇到另一个故事板时,它最近很快就被解雇了

使用故事板时需要以编程方式调整子视图的大小?

hidebottombarwhen push 在将标签栏控制器故事板移动到另一个故事板时不起作用