我想将基于Objective-C的大型iOS项目迁移到Swift。那么最好的方法是什么:将Swift文件导入Objective-C,或者将Objective-C项目导入一个全新的Swift项目?什么是最快的?
由于
答案 0 :(得分:3)
在我将项目迁移到Swift之后,我可以说在这个问题上没有银弹。它实际上取决于您正在工作的团队中设置的应用程序流程。
从我的观点和经验来看,您应该采用现有项目并开始使用Swift编写所有新逻辑并且并行尝试以现代方式重写应用程序的业务律师。例如网络层,数据库层。通过这种方式,您可以减少应用程序的回归并获得受控的迁移流程。
<强>优点:强>
<强>缺点强>:
答案 1 :(得分:1)
如果您要开始一个新项目,目的是将来只使用Swift,那么我将创建一个新的Swift项目,然后链接到您的Objective-C框架。这就是我们在工作中所做的事情,随着时间的推移,我们一直在从Objective-C项目中删除任何未使用的内容。这可能不比将所有内容导入同一个项目更快,但会使您的代码与旧的Objective-C代码分离。
答案 2 :(得分:1)
这是一个非常复杂的问题,答案是:取决于...... 我想在回答你的问题之前还有几个问题要做:
基本上,做一个大的重构(因为语言迁移)也涉及重新设计工作,如果你只是转录代码库,大多数事情将无法工作,如果你这样做,你将失去所有Swift的好处,并且没有胜利的情况来改变你的代码。
在我看来,如果你要制作一个新版本的应用程序,创建一个新项目是一件好事。更清洁,更好,但就像我说过会有很多工作和重新设计。
否则,只需将Swift代码嵌入到运行Objective-C的应用程序中,就会造成很多麻烦和混乱。但速度更快,您可以继续使用新功能并在应用上实施改进。
答案 3 :(得分:1)
所以,这是我的问题的2美分: 如果新代码部分需要,我建议慢速代码转换或者重构为Swift。 此外,如果转换后的代码当前正在其他项目(功能分支等)中使用,则无法确保它仍然可以相应地工作。
我希望你有单位测试,因为那些可以使生活更轻松。无论如何,请考虑应用程序功能的回归测试方面。您使用的库现在必须是框架(某些库可能无法编译为Framework,请注意这一点)。
如果你真的想转换代码库,我会这样做。
考虑整个应用层并在此层内 具体课程。
开始为这些类编写测试(你也可以在Swift中编写),单元测试,集成测试,UI测试
将类转换为swift类(请注意,某些逻辑可能会发生变化,其他函数也会受到影响)
实现桥接头(如果需要),您可以将其用作其他接口的应用层接口 - 这甚至可以提高您对不同代码部分一起使用的理解。如果你注意到一些奇怪的声明。东西是公开的,来自不同类别或其他东西的随机访问太多。别碰这个。事实上,请注意下来
对您的小变更进行广泛测试
重新开始下一堂课
如果所有课程都已在您当前的应用程序层上完成,那么您什么都没有。做得好。现在看看你的笔记。
继续下一层。
简而言之:我只会将那些部分转换为需要改变的Swift(重构,新功能,错误等等)。如果代码正常运行,并且您没有看到其他原因,那么,现在它是Swift&#34;,我只会考虑转换,如果我真的有时间,那么你可能会破坏工作代码甚至是设置的体系结构,这在某些方面对Swift和Objective-C有所不同。
如果你真的觉得你是这样的人:我会开始写测试;-) 单元,集成和UI测试。这将帮助您使用CURRENT代码库,也可以使用未来的代码库,无论是在Objective-C还是Swift中。 将代码转换为Swift是一个很好的帮助。
答案 4 :(得分:0)
我认为最好的方法是将Objective-C项目导入到新的Swift中。因为您可以使用objective c to swift converter。它节省了数千个工作时间。