【问题标题】:Xcode 6.3 freezes/hangs after opening XIB file打开 XIB 文件后 Xcode 6.3 冻结/挂起
【发布时间】:2015-06-15 04:29:32
【问题描述】:

升级到 Xcode 6.3(发行版)后,Xcode 现在每次我打开一个包含 IB_DESIGNABLE 视图的 XIB/Storyboard 文件时都会冻结对任何项目都使用自定义字体并包含自定义字体(不一定要在该 XIB/Storyboard 中引用该字体)。打开 .xib 文件然后尝试切换到任何其他文件后会发生冻结。 Xcode 挂起,必须强制退出。

我已向 Apple 打开了一份错误报告。 (错误 20483867)。

现在,我有两个变通办法。

  1. 从 Apple 下载并使用 Xcode 6.2。
  2. 从自定义视图头文件中删除 IB_DESIGNABLE 标记。

这可能是 Apple 的错误,但有没有人有更好的解决方法或解决方案?

【问题讨论】:

  • 同样的事情,当我尝试从 Interface Builder 切换到任何其他文件时,Xcode 完全冻结。删除 ALL IB_DESIGNABLE 属性可解决此问题。现在将回到 6.2 fow...
  • 这里也一样。删除文件夹 ~/Library/Saved Application State/com.apple.dt.Xcode.savedState 对我有帮助,但是当我再次尝试打开情节提要时,我遇到了同样的问题。
  • 您也可以尝试取消选中“自动刷新视图”以查看这是否可以防止崩溃?如果是这样,您可以查看是否可以“刷新所有视图”而不锁定。
  • @nhgrif 那个设置在哪里?
  • Apple 已请求 sysdiagnose 的输出。随着事情的进展,我将继续提供更新。

标签: ios xcode xcode6.3


【解决方案1】:

@O. Kurnenkov 的回答对我有用。它与 IB_Designable 或自定义字体、Cocoapods 等无关。

由于某种原因,“不透明导航栏”会导致nib 文件(它似乎不会影响storyboards)不断改变y 的位置;这可以在Size Inspector 中看到,其中y 位置将在 0 到 64 之间闪烁。Xcode 8.2 (8C38) 发生在我身上。

我的猜测是,这会导致 Xcode 不断更新布局,从而耗尽资源并导致它挂起/冻结。

解决方案是使用任何“半透明”选项、推断或无。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    Xcode 8.1 - 如果您有一个带导航的视图(在我的情况下,它是顶部栏不透明导航栏),只需尝试将属性“顶部栏”设置为无。

    【讨论】:

    • 我认为您可能将此添加到错误的问题中。
    • @picciano 不,这实际上是正确的。这是唯一对我有用的东西。详情请看我的回答
    【解决方案3】:

    Xcode 6.3.1 修复了 Storyboard 中自定义字体和IB_DESIGNABLE 视图的问题。通过 Mac App Store 更新,你应该会很好。

    【讨论】:

      【解决方案4】:

      我已经建议进行修改以获得更准确的描述

      只有当您的项目包含自定义字体时才会发生这种情况。 只要访问任何包含 IBDesignable 自定义视图的 Storyboard/XIB,它就会冻结,甚至不会在 Storyboard/XIB 中引用该字体。

      我的解决方法是使用同时安装旧版本的 Xcode(Xcode 6.3 beta 或 Xcode 6.2)并使用它来更新您的 Interface Builder 文件,并且永远不要在 6.3 中打开它。 打开那些Storyboard/XIB 在 Xcode 的新窗口中使用 option+shift+click 项目树中的文件。

      每当您遇到冻结时,我都会使用此命令来清除该项目的已保存状态。

      rm -rf YourProject.xcodeproj/project.xcworkspace/xcuserdata

      【讨论】:

      • 清除xcuserdata的命令很有帮助。为我工作。
      • 如果您使用的是 CocoaPods,您可能还需要从主工作区文件中删除 xcuserdata,而不是从 .xcodeproj rm -rf YourProject.xcworkspace/xcuserdata 中删除一个
      • 嘿,我最近经常遇到这个问题,所以我写了一个脚本来帮助解决这个问题。它非常适合使用 CocoaPods 的项目,但我还没有在我自己的环境之外对其进行测试。它包括此答案中发布的解决方案,但应同时处理单个项目和工作区gist.github.com/Ziewvater/3190e20b1ace2ab3c3b6。让我知道我是否可以改进它
      【解决方案5】:

      作为一种解决方法,我刚刚在我的少数使用此的自定义组件中注释掉了所有 @IBDesignable 标记。当我这样做时,是的,我无法在 Interface Builder 中调整设置,但它至少允许我打开 .xib 文件而不会导致 XCode 崩溃。

      当 Apple 提出修复方案时,我将简单地取消注释那些 @IBDesignable 行。

      【讨论】:

        【解决方案6】:

        Apple 回复:Link to Developer Forums on Apple

        感谢大家的报告。我们正在跟踪这个问题并努力解决它。不幸的是,我们没有很好的解决方法,但这里有两个选项可以帮助您:

        如果 Xcode 在启动时挂起,因为之前打开了使用自定义字体/IBDesignable 的情节提要/XIB:删除您正在打开的项目的 xcodeproj 中的“UserInterfaceState.xcuserstate”文件,它将位于这样的路径: 我的 App.xcodeproj/project.xcworkspace/xcuserdata/yourusername.xcuserdatad/UserInterfaceState.xcuserstate

        如果您确实需要使用 Xcode 6.3 编辑包含自定义字体的故事板/XIB 文件:

        1. 制作故事板/XIB 文件的副本作为备份
        2. 在文本编辑器中打开故事板/XIB 文件
        3. 删除引用自定义字体的名为“fontDescription”的 XML 标记,例如: .删除此标记会将字体恢复为标准系统字体。
        4. 使用自定义字体创建对象的出口,并在运行时将这些对象的字体设置为您的自定义字体,例如在视图控制器上覆盖 viewDidLoad 或 awakeFromNib

        重要提示:我们从不建议手动编辑故事板/XIB 文件。但是,我们认识到这个问题正在阻止你们中的许多人编辑您的文档,并希望提供一种解决方法,但需要注意的是任何手动编辑都可能导致您的文档损坏。

        【讨论】:

        • 这太搞笑了。 "如果你真的需要编辑storyboard/XIB文件"
        【解决方案7】:

        此错误已在今天发布的 6.4 Xcode 测试版中得到修复。前往开发中心并登录下载。

        【讨论】:

        • 我宁愿等待 Xcode 6.3 的新版本(例如 6.3.1),因为我们负担不起在 beta 版本上进行开发,因为与已修复的问题相比,它们可能带来更多问题。
        • 我已经下载了 6.4 但它仍然崩溃。
        【解决方案8】:

        另一种解决方法是将文件扩展名更改为所有字体文件,然后从 Info.plist 加载更改后的文件名。 这样您可以保留 IBDesignables 并仍然使用您的自定义字体,但无法在 Interface Builder 的字体选择器中看到它们。

        之前从 Interface Builder 设置的所有自定义字体都将继续工作,但要更改它们或设置其他自定义字体,您必须通过代码或从文本修改 Storyboard 或 Nib 文件编辑器以设置字体名称。

        【讨论】:

        • 这对我有用。我发现即使在删除保存的状态 / xcuserdata 之后,它也会在下次打开情节提要时再次中断。删除字体的扩展名并更新 Info.plist 似乎效果更好
        • 这对我也有用,在完成@picciano 发布的步骤之后
        【解决方案9】:

        对我来说同样的问题。删除 IB_DESIGNABLE 解决了问题.. 回到 6.2 对我不起作用,因为我正在使用 iOS 8.3 的设备上测试应用程序 - Xcode 6.2 无法在使用 iOS 8.3 的设备上运行应用程序:(

        【讨论】:

        • 这里也有同样的问题。我需要 8.3,而且我还在使用一些更新的 Swift 功能。
        • 如果您仍然需要完成工作并且碰巧遇到了一个问题,那么另一种选择是返回到 Xcode 6.3 测试版之一。我可以确认构建 6D532l(我认为是 beta 3)没有挂起。
        【解决方案10】:

        我没有答案,但发现只需强制退出和重新启动就会在完全相同的情况下重新启动 Xcode。要重新启动 Xcode,请删除文件夹 ~/Library/Saved Application State/com.apple.dt.Xcode.savedState

        【讨论】:

        • 这里的另一个选项是在 Finder(.xcodeproj 或 .xcworkspace)中找到您的项目文件 -> 显示包内容 -> 并在那里删除“xcuserdata”文件夹。它将恢复您的 Xcode UI 状态。
        • 销毁用户数据帮助我解决了 Xcode 6.3 问题
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-19
        • 2015-04-10
        相关资源
        最近更新 更多