打开XIB文件后Xcode 6.3冻结/挂起


82

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

我已经与Apple一起打开了错误报告。(错误20483867)。

现在,我有两种解决方法。

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

这可能是Apple的错误,但是有人能更好地解决或解决问题吗?


7
同样在这里,当我尝试从Interface Builder切换到任何其他文件时,Xcode完全冻结。删除所有 IB_DESIGNABLE属性可解决此问题。现在会回到6.2流...
maxkonovalov 2015年

1
同样在这里。删除文件夹〜/ Library / Saved Application State / com.apple.dt.Xcode.savedState可以帮助我,但是当我再次尝试打开情节提要时,我遇到了同样的问题。
tikhop 2015年

您也可以尝试取消选中“自动刷新视图”,以查看是否可以防止崩溃?如果是这样,则可以查看是否可以在不锁定的情况下“刷新所有视图”。
nhgrif 2015年

@nhgrif该设置在哪里?
picciano

2
Apple已要求sysdiagnose输出。我将继续提供更新。
picciano 2015年

Answers:


26

Xcode 6.3.1解决IB_DESIGNABLE了情节提要中的自定义字体和视图问题。通过Mac App Store更新,您应该会很好。


28

我已经建议进行编辑以得到更准确的描述

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

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

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

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


3
清除命令xcuserdata很有用。为我工作。
Yevhen Dubinin

5
如果使用CocoaPods,则可能还需要从主工作区文件中删除xcuserdata,而不是从.xcodeproj rm -rf YourProject.xcworkspace / xcuserdata中删除xcuserdata
Nur Iman Izam 2015年

嘿,最近我一直在碰到这个问题,所以我写了一个脚本来帮助解决这个问题。它非常适合使用CocoaPods的项目,但我尚未在自己的环境之外进行过测试。它包括此答案中发布的解决方案,但应同时处理单个项目和工作区gist.github.com/Ziewvater/3190e20b1ace2ab3c3b6。让我知道我是否可以对此进行改进
Ziewvater

15

苹果公司的回应:链接到苹果公司开发者论坛

谢谢大家的举报。我们正在跟踪此问题,并努力解决。不幸的是,我们没有很好的解决方法,但是以下两种选择可助您一臂之力:

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

如果确实需要使用Xcode 6.3编辑包含自定义字体的情节提要/ XIB文件,请执行以下操作:

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

重要说明:我们不建议手动编辑情节提要/ XIB文件。但是,我们认识到此问题正在阻止许多人编辑文档,因此想提供一种警告,即任何手动编辑都可能导致文档损坏的解决方法。


9
这真是好笑。“如果您真的需要编辑情节
提要

13

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


同样的问题在这里。我需要8.3,而且还使用了一些较新的Swift功能。
Christian A.Strømmen2015年

如果您仍然需要完成工作并且碰巧遇到麻烦,那么另一种方法是回到Xcode 6.3 beta之一。我可以确认版本6D532l(我认为是beta 3)不会挂起。
Samscam

3

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

以前在Interface Builder中设置的所有自定义字体将继续工作,但是要更改它们或设置其他自定义字体,您将必须通过代码来执行此操作,或者从文本编辑器中依次修改Storyboard或Nib文件。设置字体名称。


这对我有用。我发现,即使删除了保存的状态/ xcuserdata,它也会在下次打开情节提要时再次中断。删除字体扩展并更新Info.plist似乎更好用
John Martin

在执行@picciano发布的步骤后,这对我也很有效
Albert

2

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


1
此处的另一个选项是在Finder中找到您的项目文件(.xcodeproj或.xcworkspace)->显示包内容->并在那里删除“ xcuserdata”文件夹。它将恢复您的Xcode UI状态。
maxkonovalov 2015年

销毁用户数据帮助我解决了Xcode 6.3问题
Sascha于2015年

1

此错误已在今天发布的6.4 Xcode beta中修复。转到开发中心并登录以下载它。


我宁愿等待Xcode 6.3的新发行版(例如6.3.1),因为我们不能负担开发beta发行版的费用,因为与已解决的发行版相比,它们可能带来更多的问题。
KoCMoHaBTa 2015年

3
我已经下载了6.4,但仍然崩溃。
Jibla 2015年

1

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


我认为您可能已将此添加到错误的问题中。
picciano

@picciano不,这实际上是正确的。这是唯一对我有用的东西。请查看我的答案以获取更多详细信息
LuisCien

0

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

当苹果发布修复程序时,我将仅取消注释那些@IBDesignable行。


0

@O。库尔嫩科夫的回答对我有用。它与IB_Designable无关,也与自定义字体,Cocoapods等无关。

由于某种原因,使用“不透明导航栏”会使nib文件(似乎不会影响storyboard)不断更改y位置;这可以Size Inspectory位置将在0到64之间闪烁的位置看到。这在Xcode 8.2(8C38)中发生。

在此处输入图片说明

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

在此处输入图片说明

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

希望这可以帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.