我的Xcode 7.3编译器不断破坏并导致极长的构建和编译时间

时间:2016-07-15 20:12:26

标签: ios swift xcode

SpriteKit Xcode项目发生此问题

我有一个Swift的问题,一旦我的项目达到一定程度的复杂性,我有大量的类和方法,我的自动完成会中断,以便“跳转定义”停止工作,我的IDE减少到基本TextEditor /记事本的用处。

我的代码的颜色将完全变为白色,这会给我的眼睛带来很大的压力,这似乎只有在我删除并添加大块代码时才会发生,因为我看到我的CPU活动爬升到75%的使用率所有CPU内核。

我认为当我将目标iOS从9.3切换到8.0时,这种情况就开始发生了。这是编译器试图解释旧的Swift语法的问题吗?

我也会遇到这样的情况:我等待两分钟进行微小的更改才能编译,只是因为“链接器命令失败并退出代码”而导致构建失败,这可以通过编译两次轻松修复。

这是我的规格:

OS X 10.11.4

Core i7 Skylake 4.0GHz

16 GB DDR4 RAM

256GB SSD

我正在考虑使用双处理器构建一个运行OS X的系统,这可能会缓解这个问题,因为只需要花费2分钟来编译不同于1行的代码。

2 个答案:

答案 0 :(得分:1)

好的,我找到了一个解决了我的问题的解决方案。

从变量名称中删除所有表情符号& .Swift文件名

与Apple的官方Swift 2.0教科书相反,请勿使用任何类型的表情符号来表示变量名称 Swift文件名,除非你知道表情符号是你的使用是一个非常古老的表情符号(但即使这样,我也不推荐它)

在AppCode中打开我的项目后,AppCode的文件名出现了unicode问题,例如:foobar.swift。这是非常错误的,如果我在AppCode中打开并保存了一个预先存在的表情符号的项目,它会破坏Xcode。

因此,请避免在代码中使用表情符号,除非它适用于以下字符串:

let someString = "⬛️"

答案 1 :(得分:0)

欢迎来到Swift!伟大的语言,糟糕的工具。

开玩笑说,这里有几个问题在起作用。首先,当SourceKit崩溃时,语法突出显示消失。 SourceKit是一个动态解析Swift的库,因此Xcode可以执行索引,语法突出显示和代码完成等操作。它比以前好很多(在Xcode中使用Swift 1.0有时几乎是滑稽的),但它仍然远非完美。在SourceKit改进之前,你不会发现很多不同。

至于你的构建时间,值得尝试类似Swift Build Time Analyzer的东西来查看哪些函数需要特别长的时间来编译。我最近通过删除通过闭包设置的所有惰性变量,将我工作的项目的编译时间减半。最近的编译器更改使这些类型的闭包的类型推断非常慢,因此每个闭包需要大约6秒的时间来编译。