2017-10-12 63 views
1

背景: 试图从Swift 2.3升级大型100k代码库到Swift 4.正在取得良好进展,修复了〜1000错误。然后,在更改我们的DTO对象之一以使用Any而不是AnyObject(因为我们必须)后,编译器开始挂起。Xcode 9编译器挂起在文件中,没有警告或错误

问题: 当编译应用程序将得到一个特定的文件,只是卡住(甚至24小时后)。它不会被冻结只是停留在编译。我试过临时删除文件,但它只是卡在另一个文件等等。

研究&尝试 我的编译器和如何打开警告和标志读了。我试着看着-Xfrontend -debug-time-function-bodies-Xfrontend Xfrontend -warn-long-expression-type-checking,但没有出现。当我查看它的卡住的文件的构建脚本时,扩展的脚本中没有信息。

你知道我还能检查什么吗?我怀疑它与它无法推断类型有关,因为我们有多少个填充词典,但没有获得更好的信息,我不知道该从哪里下去。

你知道我怎么能得到有关为什么它被卡在这个文件上,并没有给出任何警告?

+2

我怀疑Swift 4的迁移者可以直接从Swift 2迁移到4. [迁移前准备](https://swift.org/migration-guide-swift4/)中的第一句话是*确保您的项目打算在Swift 3.2模式下成功迁移构建*。这意味着你应该首先更新到Swift 3 – vadian

+0

我做了一个快速转换为Swift 3,但我留下了错误。转换后,我在Swift 4中打开。之后,我开始修复错误。根据你的建议,也许我应该在3.2中完全构建它。我会看看这个谢谢。 – Aggressor

回答

0

要随动,花了好几天,但首先转换为雨燕3.2,然后斯威夫特4(注释掉大多数代码以后解决)我能得到它在Xcode 9编译