【发布时间】:2017-10-12 14:29:02
【问题描述】:
背景:
尝试将大型 100k 代码库从 Swift 2.3 升级到 Swift 4。进展良好,修复了 ~1000 错误。然后,在将我们的一个 DTO 对象更改为使用 Any 而不是 AnyObject(因为我们不得不这样做)之后,编译器开始挂起。
问题: 编译应用程序时会到达某个文件并卡住(即使在 24 小时后)。它没有被冻结,只是卡住了编译。我曾尝试临时删除该文件,但它只是卡在另一个文件上,依此类推。
研究与尝试
我已经阅读了编译器以及如何打开警告和标志。我尝试查看-Xfrontend -debug-time-function-bodies 和-Xfrontend Xfrontend -warn-long-expression-type-checking,但没有任何反应。当我查看文件的构建脚本时,它卡在展开的脚本中没有任何信息。
你知道我还能检查什么吗?我怀疑这与它无法推断类型有关,因为我们有多少 Any 填充的字典,但没有获得更好的信息,我不知道从这里去哪里。
您知道我如何获取有关为什么它卡在此文件上并且没有给出警告的信息吗?
【问题讨论】:
-
我怀疑 Swift 4 迁移器是否能够直接从 Swift 2 迁移到 4。Pre-Migration Preparation 中的第一句话是 确保您打算迁移的项目成功构建在Swift 3.2 模式。这意味着您应该首先更新到 Swift 3
-
我快速转换到 Swift 3,但我留下了错误。转换后,我在 Swift 4 中打开。之后我开始修复错误。根据您的建议,也许我应该在 3.2 中完全构建它。我会调查一下谢谢。
标签: ios xcode compiler-errors xcode9 swift4