我正在使用Xcode 6 Beta 6.
这是一段时间以来一直困扰着我的事情,但现在已经达到了几乎无法使用的程度.
我的项目开始有一个相当大的65个Swift文件和一些桥接的Objective-C文件(这实际上不是问题的原因).
似乎对任何Swift文件的任何轻微修改(比如在应用程序中几乎不使用的类中添加简单的空格)将导致重新编译指定目标的整个Swift文件.
经过深入调查后,我发现占用编译器时间的几乎100%是CompileSwiftXcode在swiftc目标的所有Swift文件上运行命令的阶段.
我做了一些进一步的调查,如果我只使用默认控制器保持app委托,编译速度非常快,但随着我添加越来越多的项目文件,编译时间开始变得非常慢.
现在只有65个源文件,每次编译大约需要8/10秒.根本不是很快.
我还没有看到任何帖子在谈论除了这个问题这一个,但它是一个旧版本的Xcode 6.所以我想知道如果我在这种情况下,唯一的一个.
UPDATE
我在GitHub上检查了一些像Alamofire,Euler和CryptoSwift的 Swift项目,但没有一个项目有足够的Swift文件来实际比较.我找到的唯一一个大小合适的项目是SwiftHN,即使它只有十几个源文件,我仍然可以验证相同的东西,一个简单的空间和整个项目需要重新编译,这开始采取一个很少的时间(2/3秒).
与Objective-C代码相比,分析器和编译都非常快,这真的感觉Swift永远无法处理大型项目,但请告诉我我错了.
使用Xcode 6 Beta 7进行更新
仍然没有任何进步.这开始变得荒谬了.由于缺乏#importSwift,我真的不知道Apple将如何能够优化它.
更新使用Xcode 6.3和Swift 1.2
Apple已添加增量构建(以及许多其他编译器优化).您必须将代码迁移到Swift 1.2以查看这些优势,但Apple在Xcode 6.3中添加了一个工具来帮助您:

然而
不要像我一样快乐.他们用来制作构建增量的图解算器还没有很好地优化.
实际上,首先,它不会查看函数签名更改,因此如果在一个方法的块中添加空格,则将重新编译依赖于该类的所有文件.
其次,它似乎根据重新编译的文件创建树,即使更改不影响它们.例如,如果将这三个类移动到不同的文件中
class FileA: NSObject {
var foo:String?
}
class FileB: NSObject {
var bar:FileA?
}
class FileC: NSObject {
var baz:FileB?
}
Run Code Online (Sandbox Code Playgroud)
现在,如果你修改FileA,编译器显然会标记 …
通常可以使用哪些策略来减少任何Xcode项目的构建时间?我最感兴趣的是Xcode特定策略.
我正在使用Xcode进行iPhone开发,我的项目正逐渐变得越来越大.我发现编译/链接阶段开始花费比我想要的更多的时间.
目前,我是:
使用静态库使我的大部分代码都不需要在每次清理和构建我的主项目时编译
从我的应用程序中删除了大部分资源,并尽可能在iPhone模拟器中使用硬编码文件系统路径进行测试,这样我的资源就不必在我对其进行更改时不断打包.
我注意到"检查依赖关系"阶段似乎比我想要的时间更长.任何减少这一点的提示都将受到赞赏!
将Swift + ObjC项目更新到Xcode 8(Swift 2.3)后,我发现50%或更多的时间Xcode完全重建项目而不是增量构建.
所做的更改是添加简单的打印语句.似乎没有关于何时执行完全重建的逻辑.
它出现在"检查依赖关系"阶段,它决定了这一点.在Xcode 7上,这似乎不是问题.
有人遇到过这种情况么?