本文谈下 iOS 开发要不要选择 Swift 的问题,纯主观无数据支撑,拒绝反驳,欢迎打赏。利益相关:实际项目中使用 Swift 一年半,从此 OC 是路人。
如果你想弯道超车,以为只要学会 Swift ,就可以不用管 OC ,iOS 开发回到一条起跑线上,我只能说:
因为这个想法很不现实。iOS 的核心 UIKit 是 OC 写的,其实 iOS 大部分的 framework 都是 OC 写的。乔帮主留给我们的珍贵历史遗产,能说扔就扔?
如果你完全不懂 OC ,在目前的形势下,你甚至无法成为一个合格的 iOS 的工程师。
Server side 虽然是完全脱离了 OC ,但是服务端的开发环境和工具链离真正的商业应用还为时尚早,除非你想写出别人无法维护的服务端代码。
那 Swift 到底有没有人用呢?
我们看TIOBE的2月编程语言排行榜:
Swift 排在 12 名,OC 排在 19 名。其实在一年前,两个的关注度还是五五开,到了现在已经拉开差距。
Swift 从国际的角度来看,接纳程度已经超过 OC(欧美地区)。也可以去 Quora 上搜搜类似的问题。Swift 2.0 的时候还有很多质疑的声音,到现在开发者已经接受的非常自然了。使用 Swift 开发是显而易见的。
这里有个问题需要先想清楚,什么样的开发者的意见值得听?很多技术不同的开发者都有不同的声音,有人激进,就有人保守。
我的价值观是,相信那些最顶尖的程序员的判断。当然这纯粹只是我个人的想法。有些程序员如果已经不在一线开发,在一线时也不是特别出类拔萃,他们的观点我就会怀有质疑的态度(前端的朋友你们知道我说谁了)。当然了,这些只是对未来技术趋势的判断。我相信顶尖的程序员的判断,我把他们当做舵手。
我列几个我心中国内几个顶尖的开发者对 Swift 的态度。
Swift进入公众视野已有一段时间,开发者社区的接纳度非常好,就我所接触的团队来说,已有不少在新产品中全面转向Swift的了。对于Objective C阵营的开发者来说,学习Swift已经是刻不容缓的事情了,对于新入行iOS犹豫在Objective C和Swift之间学哪个的同学来说,答案是两个都学。
Swift还处于新生期,这门集众家所长语言所包含的潜力还远没有被挖掘干净,业界的最佳实践还需要大量的产品来锤炼,响应式,函数式,面向协议等等都是大话题。还没看过喵神最近关于面向协议编程文章的同学,可以去仔细阅读感受下面向协议对于现有OOP方式的改变,这种思想层面的颠覆正是Swift的魅力所在。使用Swift的问题也还很多,Xcode崩溃,语法高亮消失,编译慢等等,你可以看到很多开发者吐槽用Swift写代码,但没有人转身离开。
我一度以为国内正规公司没人用 Swift 。
对于豆瓣团队的技术实力我是不怀疑的,在去年我欣喜的发现他们在用 Swift ,而且还用的挺好,在豆瓣App的模块化实践中提到:
Swift 在工程效率上确实优于 Objective-C。和 Objective-C 相比,Swift 可以用更少的代码,更清晰的方式完成相同的功能。当然,混合使用 Swift 和 Objective-C 存在一定的工程成本。所以,这里就需要权衡:是保持简单,只使用 Objective-C 呢?还是忍受一定的不便,使用一些 Swift,带来效率上的提升呢?
我们在项目中使用 Swift 的体会是:有快乐,当然也伴随着一些不便。总体而言,不便都可以克服。
2月初的时候刚好和隔壁的一个网易的朋友聊天,问他们用 Swift 吗。他说新的代码有些已经开始用 Swift 写。维护的部分就还是用 OC。
一位不愿透露姓名的百度的朋友(@AidenRao)前几周在群里说他们一个项目在考虑使用 Swift ,最近在做调研,后来他们项目组决定使用 Swift 开始写。
上次去饿了么参加一个技术活动时也得知他们接下来会慢慢开始转移到使用 Swift 开发。
在国外使用 Swift 开发已经是一件很主流的事情。在国内不知道为什么原因(其实我就是不好意思明说)使用 OC 还是绝对的主流,使用 Swift 的只是一小撮开发者。
如何评价:为什么很多大公司继续使用 Objective-C,不用 Swift?
我就问一句:哥,你在的是大公司吗?BAT用什么技术你就用什么技术?代入感不要这么强好吧。
可是他们说 Swift :不稳定,不成熟,慢,混编效率差。
这些只是大部分不愿意学习新技术的人的借口。如果你真的学习了 Swift ,写了几千行代码,你觉得这些问题真的是问题,我就认了。但是你务必自己去试一试。
当然我不可否认使用 Swift 是有代价的。但是,哥有信仰。
选不选 Swift 其实是一种态度。
有可能,光光不想和那群傻逼一样还写 OC 就够了。
不好意思,我又冲动了。
作者:@没故事的卓同学