打开故事板时,Xcode 8挂起/无响应

时间:2016-10-03 17:55:44

标签: storyboard xcode8

我最近升级到Xcode 8并将我的项目更新为Swift 3.所有工作都很好。故事板加载一直很慢(即使仍在运行Xcode 7),与Xcode 8差不多“慢”。我一直想象这是因为我是一个较旧的(2011年末)Macbook Pro。

但是最近有时Xcode会在我试图打开故事板时挂起。从昨天起,它总是“悬挂”。 Xcode变得反应迟钝,我不得不强制退出它。

在Activity Monitor中我看到Xcode使用了102%的CPU和内存使用率一直在增长(如果我允许的话,超过10GB)。

现在我真的被困了,因为当我打开Xcode时,它会立即打开我的项目并想要打开故事板。我甚至无法更改为快速文件。我不再进入我选择项目的窗口了。所以,如果没有Xcode没有反应,就无法打开我的项目。即使我双击另一个项目打开Xcode,它仍然会尝试打开我的项目(在故事板上)。

我尝试了很多东西(基于我可以在旧版Xcode的类似问题上找到的SO线程):

  • 删除了Xcode并删除了〜/ Library / Developer的内容。然后重新安装Xcode。
  • 删除了var / folders的内容
  • 删除了派生数据文件夹的内容
  • 重启Macbook

我的下一个尝试是下载Xcode 8.1测试版。但实际上不是那样做的。

我可以尝试的任何其他建议吗?

小更新: 管理以清除Xcode的“状态”,它默认打开我的项目,并在故事板上打开它。这是通过:

  • 删除〜/ Library / Saved Application State / com.apple.dt.Xcode.savedState文件夹(这将在启动时再次显示最近的项目窗口)
  • 为了防止项目在打开时加载特定文件,我转到了.xcworkspace(在我的项目文件夹中)的内容,然后删除了/xcuserdata/myusername.xcuserdatad/UserInterfaceState.xcuserstate。现在项目打开时没有选择任何文件。

仍然......主要问题仍然存在。当我点击我的故事板时,Xcode变得反应迟钝。

16 个答案:

答案 0 :(得分:46)

我在Xcode 8.1中遇到了同一个问题。

拥有"顶级酒吧"和/或"底栏"除了" Inferred"导致Xcode减速到爬行。将此更改为"推断"将性能恢复正常,其缺点是它会删除预览中的条形。

Incorrect settings

Correct settings

答案 1 :(得分:14)

根据我的经验,对于一个使用XCode8打开的旧项目,它迫切想要问一些关于默认设备的问题,以便查看故事板。这个问题非常重要,在你回答之前,你正盯着一个看不见的对话窗口,直到XCode没有响应。

一些解决方案对我有用:

  1. 如果在启动XCode时获得1.5秒的响应时间窗口 - 立即切换到非故事板文件。如果在辅助面板中使用带有故事板的拆分窗格编辑器,请将其关闭。
  2. 创建另一个故事板,打开它 ,XCode会询问有关默认设备的问题。
  3. 回答问题,保存项目状态并希望打开故事板
  4. 删除这些功能后,我可以重新打开故事板      

        <capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
        <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    

答案 2 :(得分:11)

我遇到了类似的问题:Interface Builder很慢到几乎完全没有响应。

我发现清除xcuserdata目录会使IB恢复正常速度。

据推测,一些糟糕的状态已经悄然发生,导致经济放缓。

rm -rf Project.xcodeproj/xcuserdata/
rm -rf Project.xcworkspace/xcuserdata/

答案 3 :(得分:6)

我终于想出了一个解决方案,很大程度上基于这个问题的答案。它最终归结为与工作故事板的XML进行比较,但是这里是我采取的步骤的总结。

  • 重新安装Xcode 8.2.1并重新启动

  • 删除配置,状态和数据文件

    rm -rf ~/Library/Developer/*
    rm -rf ~/Library/Caches/com.apple.dt.Xcode/*
    rm -rf ~/Library/Developer/Xcode/DerivedData/*
    rm -rf ApplicationName.xcodeproj/xcuserdata/
    rm -rf ApplicationName.xcworkspace/xcuserdata/
    rm -rf ~/Library/Saved\ Application\ State/com.apple.dt.Xcode.savedState/
    
  • 修复自动布局问题

  • 从storyboard XML中删除所有依赖项,但:

    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    
  • 检查所有故事板和xib文件,确保所有&#34; Top Bar&#34;和&#34;底栏&#34;设置为&#34;推断&#34;

最后两项似乎是最重要的。

答案 4 :(得分:3)

我如何解决故事板悬挂问题:

  1. 备份有问题的故事板文件。
  2. 在项目中删除它。
  3. 创建一个新故事板,其名称和位置与已删除的故事板相同。
  4. 使用文本编辑器编辑2个故事板。
  5. </dependencies>标记之后的xml数据从旧标记复制到新标记。

答案 5 :(得分:1)

使用Xcode 8.1 beta。猜猜它是Xcode 8中的一个错误。

答案 6 :(得分:1)

我刚刚升级到Xcode 8.3并且这个故事板悬挂问题来了......我已经尝试了上面提到的所有内容,但没有一个有效。

最后我注意到有一些自动布局警告说导航控制器场景的导航栏大小之一不正确。它坚持它的宽度应该是320而选择的设备是iPhone 7.我切换回Xcode 8.2.1(8.3太慢了,无法改变任何东西!),然后将观看设备更改为iPhone SE ...全部修复!

答案 7 :(得分:1)

从中删除您的派生数据 /用户/ {名} / Library /开发商/ Xcode中/ DerivedData

(你可以从中得到确切的路径) 档案 - &gt;项目设置: 要么 档案 - &gt;工作区设置

答案 8 :(得分:1)

升级到Xcode 9之后不久我遇到了这个问题,任何时候我在故事板中改变了任何东西(甚至将视图移动了1 px),它会在旋转的死亡沙滩球中持续至少10秒。

我不想清除整个xcuserdata文件夹并丢失所有断点等,但只是删除UserInterfaceState.xcuserstate并重新启动Xcode为我工作。

答案 9 :(得分:1)

(Xcode 9.2)我在向stackview添加约束后立即发生了这种情况。无论我做了什么,它似乎都没有解决它。我知道它必须是一个无法解决的自动布局问题。

我最终在文本编辑器中打开Main.storyboard文件并删除导致问题的场景。它将从

开始
    <!—YourViewControllerName—>
    <scene sceneID=“XXX-XXX-XXX”>

</scene>结束。只需突出显示整个块,删除,保存,然后重试。

比从头开始好多了!

答案 10 :(得分:1)

我使用Xcode 9.2遇到了同样的问题,通过删除包含其他视图的堆栈视图修复了它,我刚刚删除了stackview及其子视图标记,并在场景中保留了其他视图。

答案 11 :(得分:0)

这就是我所做的,切断令人不安的viewcontroller,将其粘贴到一个新的临时项目的故事板中,然后粘贴回viewcontroller。对我来说很好。

随着时间的推移,随着故事板的增长,xcode使得查看控制器元素的历史记录变得混乱,从而导致冻结。

答案 12 :(得分:0)

在Apple修复IB之前,在违规.xib的第一个XML行(<document>标记中):

useTraitCollections="NO"

答案 13 :(得分:0)

我多次遇到过这个问题。通常,Bonan的解决方案适合我。在它没有的两个场合,问题似乎是我正在使用的工具栏。当我通过平移到故事板上工具栏的视图控制器在我的屏幕上不可见的位置来隔离违规工具栏时,故事板立即加速备份。然后我再次回到坏视图控制器并删除工具栏,然后系统再次减速。我确定有一种方法可以修复工具栏而不是删除它,但我不知道那是什么。我将模拟指标值设置为&#39;推断&#39;如上所述Luke Van In所以它一定是一个不同的问题。

答案 14 :(得分:0)

  1. 打开Finder窗口并导航到您的项目
  2. 右键单击.xcodeproj文件(实际上是一个包)
  3. 选择显示包装内容
  4. 出现一个新窗口
  5. 删除一个名为xcuserdata的文件夹
  6. 重新启动Mac

答案 15 :(得分:0)

删除上面列出的所有内容,然后重新启动Xcode。解决方法是重新启动计算机。我知道这很愚蠢,但是在IB中某种方式占用了资源。