SourceKit一贯的CPU和RAM饿了,速度慢,容易死机。 它(用我的经验)Xcode 9更好一点。
一个大问题是,Swift中的很多表达式都有大量的重载。对于工作类型推断,所有这些都必须进行测试。这也是为什么Swift代码的编译时间通常稍长一些的原因。
一旦SourceKit开始处理这些表达式,其他所有内容都必须等待。
您可以通过避免长的表达式使用二进制运营商和map
,flatMap
链和收藏和序列filter
操作尤其是当作为对这样的表达式解析返回类型的时间复杂度是指数帮助SourceKit。
您可以尝试通过声明变量类型(let a: X = expr
而不是let a = expr
)来减少长型推断时间。根据我的经验,这也有助于关闭链条map
,filter
和flatMap
链({ param -> Result in ...}
而不是{ param in }
)。
您可以使用Other Swift Flags构建设置中的-Xfrontend -debug-time-function-bodies
标记来获取Xcode中构建报告中每个函数的编译时间,这可以帮助您识别需要很长时间才能由编译器和SourceKit处理的表达式。详细说明可在this blog post中找到。
除此之外,我不知道任何其他解决方案。
谢谢,但我不使用故事板... –
这将取代我的旧故事板成一个只有一个视图控制器的新故事板。更好地测试它,否则我会向社区报告。 –