A站 的 Swift 实践 —— 上篇

图片

背景介绍

AcFun俗称为“A站”,作为一款二次元内容社区产品,以“认真你就输了”为文化导向,倡导轻松欢快的亚文化。AcFun涵盖了中长视频,小视频,番剧,文章等众多内容,支撑这些内容的大部分功能都选择了用Swift开发,早在2019年,AcFun的iOS技术团队就已将Swift作为AcFun app和水母app的开发首选语言。Swift的出现为用户提供了更稳定的使用体验和更快的产品更新节奏,同时也为研发工程师创造了更高效舒适的开发体验。Objective-C已成过去时,AcFun正全面拥抱Swift,驶入iOS开发快车道。

苹果推出Swift的原因

谷歌作为苹果最大的竞争对手,除了Android上的Kotlin,还推出了Flutter和Fuchsia里在用的Dart语言,这些语言的口碑和易用性远高于苹果的Objective-C(后面简称OC)。OC历史久远,是C语言的超集,因此其发展受C语言限制。在这样的背景下,大家都以为苹果会忽视其它新语言,但其实苹果对于那些新语言特性垂涎已久,将想法施于行动的是当时还在苹果的 Chris LattnerChris是狂热的编译器和编程语言爱好者,C、C++、OC语言编译器LLVM的创造者,在LLVM开发过程中,Chris对类C语言有着很多不满意的地方,比如预处理器、Trigraphs还有多年积累的奇怪东西。

为了能够兼顾类似React一样的编程范式和具备Java等正流行的语言的优秀特性,Swift经历了长期的ABI稳定和语言特性迭代增加的过程,最终推出了能和JSX声明式UI匹敌的Result Builders,并且通过SwiftUI和Combine这种能极大提升开发效率的框架让开发者收获了惊喜。

可能是Swift的ABI稳定得太晚,不止各大APP里已经积累了大量的OC库和业务代码,苹果系统里的OC占比也依然很高,博客《Evolution of the programming languages from iPhone OS 1.0 to iOS 14》[1] 统计了 iOS 历史版本 OC 占比,从文章中可以看到最近的iOS 14版本里OC占比高达88%,C和C++主要用于音视频、电话、网络等比较基础的模块,其占比相对稳定,特别是C并没有明显增加。不过在最近几个版本中,Swift占比持续增高,iOS 14达到了8%,可以看出苹果正在使用Swift重构以前的库。

苹果采取的实际行动

为了让广大开发者能够用上更方便安全的Swift,苹果采取了一系列实际行动。比如不再给OC新加接口,而是用Swift替换SDK,WWDC17之后就已经看不到OC的例子了,苹果主推的一些前沿技术,比如AR、AI、Health等,在新版里也都只有Swift版本。所以,在未来的发展中,企业不考虑Swift或是缺少Swift人才,都将会影响到新技术的引入。

另外,苹果的RealityKit、CareKit、Create ML、System、WidgetKit、CryptoKit、Combine、SwiftUI等框架在与OC混编时都非常困难,从这些方面可以看出,苹果所有新开发的框架都在避免和OC产生关系,甚至自WWDC2020起新增加的App Widget只能用SwiftUI开发。

对于苹果一系列的行动,社区与之对应的反应是没有热情去回答OC的Bug了,因为有了更好的追求。OC三方库作者也没有维护的意愿,更新周期比Swift长很多,比如大家都知道的OC网络库AFNetworking,最新版本更新用了2年多时间,而该作者用Swift开发的对应的网络库Alamofire,更新频率接近半个月,作者对Swift的热情可见一斑。

iOS开发首选语言也是Swift,以后可能会面临OC工程师后继无人的局面,物以稀为贵,OC开发者的成本也会大增。使用Swift相关技术栈的团队在吸引人才方面也存在一定优势,AcFun的工程师田赛同学此前选择了快手,而拒绝了另外一家公司的offer,一个重要因素就是AcFun可以使用Swift开发。AcFun的iOS开发工程师关旭航说:“起初我们团队在业务开发中探索Swift时,对Swift不够熟悉,并不敢主动尝试使用,通过组内的培训以及业余时间的学习,我对这门语言越来越感兴趣,看到其他同学写的Swift代码既简洁又易懂,我也慢慢开始尝试使用,现在我已经不想写Objective-C了”。

按照目前这个趋势,使用Swift势在必行。

Swift

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值