如何将Giant project Objective C转换为Swift

Ale*_*eem 5 xcode code-migration objective-c swift

我正在运行项目,它真的很大,它包含近1000个文件和4个自定义(自己构建)框架,还有近10个其他通过Pod添加.我已经完成了将Objective-C代码迁移到Swift以及使用Swiftify进行迁移.

我开始逐个转换每个文件,正如Apple建议的那样,但第一个转换不是由Swiftify成功完成的,也是依赖问题.

所以在这个位置看起来我开始在撒哈拉沙漠散步,在那里我看不到任何终点.

所以我需要一些建议如何转换为Swift这个大规模的项目?

Soh*_*mon 7

你将Objective-C转换为Swift的方法是错误的!Apple还花时间在他们的框架中完全采用Swift,而新闻是在2018年,85%的框架都转换为Swift,所以关键是他们花了将近3年的时间来完成它!

最大的问题是Swift仍在不断发展,明年我们可能会看到"Swift 5.0".所以我建议你通过以下方式:

  1. 选择最新版本的Swift(即4.2).
  2. 而不是开始转换完整的项目,适应模块化的方式.
  3. 从您的项目开始,首先开始选择不会以任何方式影响应用程序的较小模块,并看到"Swift"文件与Objective-C(您的旧代码)配合得很好.参考:如何将Swift代码导入Objective-C?
  4. 一旦你完成了较小的模块,慢慢开始学习大模块你也可以找到项目中Objective-C的开源Swift库.
  5. 此外,您还可以以较小的项目形式从头开始构建模块,然后只需拖放到Objective-C项目中.
  6. Andreas Oetjen建议:您可以从分离类层次结构开始,然后将一个"子树"转换为另一个.

以上几点如何帮助?

  1. 您可能会发现一些不寻常的代码或库.
  2. 您最终可能会在适当的结构下使用干净的代码
  3. 您可以使用"Swift + Objective-C"来使您的应用程序顺利运行并定期更新,而不是等待几个月完全转换它.


Md.*_*san 6

我最近使用SwiftifySVProgressHUD转换为swift .转换后的代码可以在这里找到.

主要的要点是:

  1. 要一次启动代码转换,保持与Objective C的互操作性,即转换后的swift文件应与现有的Objective-C代码互操作.
  2. 选择一个没有子类且简单的类.

转换策略流程图

详细的转换策略可以在这里找到.