下一个新项目,我要不要用 Swift 来写?

8,904 阅读6分钟
原文链接: mp.weixin.qq.com

前两天,在我们「老司机 iOS 周报读者群」里面,有个读者问了这样一个问题

 今年如果新起一个项目,大家觉得适合用 Swift 来写吗?

群里马上引起了一个不小的讨论,我想可能是很多 iOS 开发者目前比较困惑的问题,就找了几个周报的编辑,聊了聊他们对于这个问题的看法,希望可以对大家有所帮助。

叶孤城

iOS 技术专家,江湖人称 iOS 届吴彦祖

我最早接触 Swift 是 2015 年还在流利说的时候,但是当时国内使用 Swift 的团队并不多,所以在后来换工作的时候,我又回到了 OC。

从我自己的经验上来看,我的 Swift 还是没有 OC 来的溜,但是也不妨碍我更喜欢 Swift ,所以在这次创业项目的技术选型上我毫不犹豫的选择了 Swift 作为主要开发语言。

对我自己而言,我可以很明显的感觉的到,使用 Swift 开发的时候,开发速度明显比使用 OC 的时候来的快,所以我觉得用 Swift 可以有更高的开发效率。

其次,在 Swift 目前的语法规则下,结合一些开源的代码规范,可以减少很多开发人员的低级错误,如果你们团队没有资金招测试,Swift 或许是一个不错的选择。

Swift 的语法糖很多,互相 review 也可以增长不少功力,而不像 OC 一样,写来写去就是一种。目前唯一的劣势也就是 runtime,目前使用的还是原来 OC 的那一套,这样的用法相当于套了一个壳,如果 swift 本身的 mirror 能更强一点,一定会更加好用。最后一个就是对于音视频处理的时候,用 Swift 比较酸爽,这个也算一个弱点,指针问题处理起来也相对麻烦一些。

mmoaay

饿了么移动架构师,自称:画“渣”程序猿

是否选择 Swift 作为主要开发语言,主要考虑几个问题就好了。

首先,第三方支持是否已经比较完善,如果支持不够完善,那你们可能需要花很多时间去解决使用 OC 不需要解决的问题,从目前来看,基本上已经不算是一个问题了;

其次,Swift 人才招聘是否比较困难,就我了解而言,目前招聘一个会 Swift 的开发也不难;

最后,也就是包大小的问题,但是随着 Swift ABI 的稳定,这个问题也不算是一个问题了。

但是如果是一个全新的项目的话,我可能会选择 Flutter。主要有以下几个原因:

1. 集团现在 Flutter 的输出比较多,我们不用踩太多坑;

2. 我们目前 Flutter 在双端的性能表现都还不错;

3. 开发成本低,没有双端兼容性问题;

4. Flutter 桥接比较简单,之前原生的一些基础监控,我们也都可以简单接入 Flutter

5. Flutter 目前支持 iOS、macOS、Android 和 Windows、未来还会支持 Web 和 Fuchsia OS

现在 Flutter 最大的问题还是在内存和包大小这块。Swift 怎么说呢,苹果现在没有太多跨平台的计划,不太符合未来移动端发展的预期啊。我们最近用 Flutter 开发了两个大的业务,人耗就是原生的一半,就前期花了一些精力接入原生的基础功能。

四娘

在 Swift 有丰富的开发经验,老司机周报低调担当

我个人认为 Swift 肯定是 2019 第一选择,语法比 OC 更加先进,依托于类型系统可以写出更加可靠的代码。

现在这个时间点来看 Swift 的生态的话,至少是不逊色于 OC 的,一方面是可以无缝调用 OC 的库,另一方面是 Swift 的社区更有活力,有更多提升开发效率的库,例如 Reusable 和 R.swift,目前新出的库大部分也都是 Swift 写的

苹果新出的框架也有一小部分不再提供 OC 的原生支持,例如 Network,只有 C 和 Swift 两个版本的 API。

稳定性来看,肯定是不会有 Objective-C 那么好的,毕竟这么多年了,但现在对于新启动的项目绝对是足够的,而且现在开始使用也是能享受到 Swift 发展的红利的。

Damonwong

老司机周报打杂专员

我们公司从 Swift 1.2 的时候就已经全面 All in Swift 了。虽然从结果上看并不是一个很明智的选择,但是这几年的开发体验可以说的上是很舒畅了。

前两天,我特地问了我们 iOS 负责人一个问题「如果再让你选一次,你还会选择从 Swift 1.2 开始使用 Swift 吗?」他给我的回答是「不会,很痛。但是现在已经可以开始用了。」

是的,Swift 经过几年的改进,现在已经是十分优秀了,而且还有很多新特性将会被添加进来。当然你也不用太担心「每年都要学一遍 Swift」, 从 Swift 3 的那次 API 大改之后,每一次版本升级需要做的迁移工作真的很少。基本上半天都可以完成了。

当然,我觉得作为 iOS 开发,还是要掌握 OC 的一些知识,毕竟目前 iOS 的很多系统库是基于 OC 写的,如果你只了解 Swift 的话,理解起来还是会有点儿困难的。总的来说,OC 是 iOS 开发的基础,Swift 是一项加分技能。

当你还在犹豫要不要使用 Swift 的时候,别人早已经开始储备 Swift 技能或者开始使用 Swift 了~ 附上一张 @南栀倾寒 整理的数据

2019 Swift 流行度调查,美区 Top 100 和中国区 Top 100 Swift 使用情况

(据  @南栀倾寒 推测,美国区剩下的为什么不用 Swift 大概是因为剩下的 google 占了十几个估计都是用 Flutter, 还有几个是国内的,比如抖音,所以美国基本没有只使用 OC 的 App )

最后,借用老彭的一句话「熟悉啥就用啥,没有什么合适不合适的,就算 app 大规模重新写,也不会浪费太多时间,不用在选择上浪费太多口舌之争。」做一个结论。


如果你也有类似的问题,欢迎关注我们的公众号给我们留言,我们会选择一些合适的问题,帮你们去咨询一些比较资深的开发,在后续整理好后发放出来。


最后,打一个广告,如果你觉得需要从新手继续进阶,戴铭老师「iOS 开发高手课」将会十分适合你,点击「阅读原文」进入购买页面。购买成功之后添加微信 AwayZ_T 返还小红包并邀请进入周报读者群和大家一起学习~