Swift 2021 生态调研报告

2021年11月23日 阅读数:3
这篇文章主要向大家介绍Swift 2021 生态调研报告,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

回顾 2020

在去年的《一次关于 Swift 在 iOS 生态圈里的现状调研》一文中, 咱们分析了整个大环境的现状,在文章发表后获得了你们的普遍关注,时隔一年,咱们再来看看有什么变化吧?html

Swift 语言

版本变化

首先从去年的 5.2 版本,到如今即将发布 5.4 版本,Swift 经历了 2 个小的版本变化,分别是 5.3 和 5.4ios

其中 5.3 版本给出了如下几个语言特性:git

  • SE-0276 [1]:catch 语句在捕获 error 的时候,能够更加灵活自由,例如一次捕获多个 error 或者对 error 的值进行绑定。
  • SE-0279 [2]:支持多个尾随闭包,这个特性主要是为 SwiftUI 准备的。
  • SE-0266 [3]:enum 支持 comparable 协议,并根据顺序自行决定大小
  • SE-0269 [4]:在某些场景下能够避免 self 关键字的声明
  • SE-0281 [5]:经过  @main 关键字定位程序入口
  • SE-0267 [6]:在函数的泛型和扩展中就可使用包含  where 关键字的语句
  • SE-0280 [7]:protocol witness 匹配模型在枚举值中的增强
  • SE-0277 [8]:新增 Float16 的数据类型
  • SE-0268 [9]:didSet 方法优化和语义更新
  • 首先在  SE-0271 [10] 中,Swift Package Manager 在资源文件的支持上有了进一步的提高,同时,在  SE-0278 [11] 中,SPM 对本地化资源的支持也有了改进,并且在  SE-0272 [12] 中,SPM 终于支持了二进制形式的组件。在  SE-0273 [13],SPM 容许咱们对特定的 target 进行特殊的依赖配置。

其中在将来的 5.4 版本又新增了如下几个语言特性:程序员

  • SE-0287 [14]:提高了隐式成员表达式的类型推断能力。
  • SE-0284 [15]:在函数中能够定义多个可变参数。
  • SE-0289 [16]:在 5.1 就公布的 Function Builder 功能正式命名为 Result Builder,并在原先的基础上进行了完善。
  • SR-10069 [17]:嵌套函数支持重载
  • SE-0294 [18]:新增 executable 类型的 target,使得  SE-0281 [19] 新增的特性更易于使用。
  • property wrapper 除了能够做为属性外,还能够在函数里做为本地变量。

On the road to Swift 6

在 2021 年的 1 月,Swift 社区的 Ted Kremenek[20],他的另外一个身份是 Manager of the Languages and Runtime Team @Apple,在 swift.org forum[21] 公布了一则名为《On the road to Swift 6》[22]的文章github

在这篇文章里,提到了一些对 Swift 6 的规划,从大方向来讲,Ted 提了三点:web

  1. 加速整个 Swift 软件生态的发展:包含兼容更多的开发平台,简化软件的安装部署和大力发展各种工具库。
  2. 打造极致的开发体验:包括更快的构建速度,更好用的调试工具,更灵敏的代码补全和更丰富的诊断信息。
  3. 结合开发者的反馈进一步发展语言特性:包括完善 API 的设计,拓展其在底层系统,服务器和机器学习方面的应用场景,同时对某些主流的语言特性提供支持,例如并发特性和内存相关的特性。

同时 Swift 的核心团队也发生了一些变化,Saleem Abdulrasool[23] 和 Tom Doron[24] 做为新成员加入到核心团队,而 [Dave Abrahams] 则退出了核心团队。算法

这里稍微提一下的,Tom 是 SwiftNIO 的核心开发,同时在 SSWG(Swift Server Work Group) 项目中也是主要的发起者,而 Saleem 是 Swift to Windows 的核心发起者,这两个变更结合着最开始的三个大方向,能够看出整个核心团队是言行一致的。编程

另外关于 Swift 6 的公布时间,Ted 的原话是这样的:swift

Instead of announcing a specific timeline for “Swift 6”, the plan is for the community to be a part of seeing these efforts progress, with focused efforts and goals, and we release Swift 6 when those efforts culminate.api

因此这样看来,Swift 6 仍是有一段时间才能与咱们见面,毕竟人家说了 when those efforts culminate!

那反过来看,Swift 5 还将会是近期使用的主要版本。(PS:但愿今年的 WWDC 21 不要被打脸)

技术社区

语言排行榜

一样咱们来看一看编程语言排行榜 TIOBE[25] 和 PYPL[26] 的状况,在 TIOBE 的排行榜中,Swift 在今年的排名是第 15 名,而 Objective-C 已经完全排在了 20 名以外了。

而在 PYPL 的排行榜中,Swift 和 Objective-C 的热度仍是较为接近的。

从社区的语言排行榜来看,虽然乍一看,感受仍是 Swift 和 Objective-C 共存的大环境,但其实背后也反映出,Swift 已经被大部分开发者所接受了。

社区活跃度

一样经过 GitHut 2.0[27] 这个工具对 GitHub 进行分析。

下面四张图的 Y 轴分别表明了 Pull Requests ,Pushes,Stars,Issues 的数量,蓝色的线表明 Objective-C ,浅橙色的线表明 Swift。

能够发现,在 Pull Request 方面,Swift 占比约 0.595%,而 Objective-C 占比约 0.335%

同时 Push 方面,Swift 占比约 0.476%,而 Objective-C 占比约 0.310%

在 Stars 方面,Swift 占比约 2.107%,而 Objective-C 占比约 1.067%

在 Issue 方面,Swift 占比约 0.767%,而 Objective-C 占比约 0.607%

总的来看,在 GitHub 的大环境中,社区中的开发者仍是持续看好 Swift,也相对更加活跃,尤为在 Star 这项指标上能够明显看出,它高出了 Objective-C 近一倍!

商用 SDK 的技术选型

在今年咱们还发现了一些有意思的现象,很多商用 SDK 也开始了 Swift 的迁移。

例如国外的 Nordic Semiconductor[28] 公司,它是北欧的一个半导体公司,主营蓝牙芯片,在业界属于领先地位,很多使用它家芯片的团队会涉及到固件升级问题,无线的升级方案须要进行固件传输、校验、升级管理等动做,而这些动做都得使用它们家提供的 SDK 来完成。

在 Nordic Semiconductor 的 GitHub 页面[29]上,咱们能够看到目前提供的商用 SDK 中,iOS 端只有 Swift 版本[30],而 Android 端只有 Java 版本[31]

同时像 Google 的 Firebase 在其 RoadMap[32] 里也明确指出了将更加关注 Swift 的使用体验并开始了部分改造。

相信不久的未来,会有愈来愈多的厂商加入到 Swift 的社区中,除了 Swift 是将来 这样人人都懂的道理之外,这两年新增的特性,例如 ABI 稳定,Module 稳定,以及 SPM 对 binary 组件的支持,都会致使厂商的态度改变,尤为是那些须要使用非源码形式发布组件的厂商,毕竟这些特性从根本上解决他们面临的工程问题。

Apple 生态

SDK 能力

一样,咱们继续分析了 Apple Developer Documentation[33] 下的 239 个 主题,发现今年的 Swift 独占和 Objective-C 独占的 SDK 状况以下

维度 个数 SDK 名称
Swift 独占 13 Swift(Swift Standard Library),Combine,SwiftUI,RealityKit,CareKit,Create ML(Create ML, Create MLUI),Playground Support,PlaygroundBluetooth,Apple CryptoKit,Swift Packages(Swift Package Manager),Developer Tools Support,System,WidgetKit
Objective-C 独占 12 DarwinNotify,DriverKit(macOS 专属),EndpointSecurity(macOS 专属),HIDDriverKit(macOS 专属),Kernel(macOS 专属),NetworkingDriverKit(硬件驱动相关),PCIDriverKit(硬件驱动相关),SerialDriverKit(硬件驱动相关),USBDriverKit(硬件驱动相关),USBSerialDriverKit(硬件驱动相关),xcselect (macOS 专属),SCSIControllerDriverKit

在 Swift 独占方面,新增了 3 个 SDK,分别是 Developer Tools Support,System,WidgetKit,其中 System[34] 是个用于进行底层文件操做(low-level file operation)的库,彷佛这也是 Apple 的首个用 Swift 编写的系统底层库(PS:若是说的不对,还请各位读者指正);另一个想说的重点就是 WidgetKit[35],这也是首次 Apple 在推广系统新特性的时候强制要求开发者必须使用 Swift 技术,这个策略我认为仍是十分高明的,它为 Swift 技术的推广和应用找到了新的出路。

同时 Objective-C 独占方面,新增了一个 SCSIControllerDriverKit[36],但相比于去年,Professional Video Applications[37] 和 IOUSBHost[38] 两个 Objective-C 独有的 SDK 被改形成了 Swift 和 Objective-C 均可以使用的状况,而 QTKit 被完全废弃了。

至此,咱们发现了,Swift 独占库的数量首次大于了 Objective-C 的独占库,是否是颇有意思!

原生 App 分析

国外的开发者 Timac[39] 在其文章《Apple’s use of Swift and SwiftUI in iOS 14》[40]里对 iOS14 中的 Swift 和 SwiftUI 的使用状况进行了分析。

iOS 14.0 包含了 291 个使用 Swift 技术的二进制文件(PS: 还有一个统计口径是 351 个,不过这里面有不少程序对 Swift 的使用很初级,因此 Timac 就将其排除了),这个数量比 iOS 13 多了一倍以上,另外 Swift UI 也在 iOS 14 上被普遍使用,目前已经有 43 个了,其中去年新增的翻译应用是彻底使用 Swift 和 SwiftUI 编写的 App。

iOS 中不一样编程语言的发展

Timac 在其文章《Evolution of the programming languages from iPhone OS 1.0 to iOS 14》[41]给出了不少有意思的结论。

首先,在 iOS 14 中,总共有 4173 个二进制文件,具体的列表能够参考 iOS 14.0 (18A373) 统计[42],其中:

  • 88% 使用 Objective-C
  • 17% 使用 C++
  • 8% 使用 Swift
  • 8% 所有使用 C
  • 1% 使用 SwiftUI

下面的图是 iPhone OS 1.0 到 iOS 14.0 中,各个二进制文件的状况,注意这里的二进制文件能够包含多个语言,因此下表的总数可能会大于二进制的总数,例如 iOS 14.0 里 44 + 351 + 337 + 708 + 3667 > 4173

从这个视角来看,也能够得出几个有意思的结论:

  • 首先,iOS 的每一个版本都变得更加复杂
  • Swift 的使用在不断增多,并且至少目前来看,Swift 的使用已经超过了 C
  • Objective-C 的增加仍是比较稳定的
  • C++ 的增加比较缓慢,或者说至关缓慢
  • C 的增长几乎没有变化

若是上面的图看起来不明显,咱们能够经过这个图来看趋势。

固然上面的分析是基于数量来进行的,那么若是咱们从体积上进行分析,也就是二进制大小的角度来看,又会得出怎样的结论呢?

Timac 在其文章《Comparing iPhone OS 1.0 with iOS 14 using tree maps》[43]里,也给出了一些本身的解读。

下面是 Timac 根据相关的数据和脚本绘制出来的 iOS 14 的 tree map(矩形式树状结构绘图法)[44]

  • 其中 Preinstalled Assets 和 Linguistic Data 是与机器学习相关的预置资源
  • Health 相关的内容在 iOS 14 的占比不算小,能够看出其重视程度
  • 在 iOS 3.1 以后,提供了 dyld shared cache 技术,红色区域就是支持这个特性的 framework。

固然,Timac 对这个结果又进行了更细致的划分,它的结果以下

这里咱们从二进制的大小,或者代码量的多少来考察某个系统功能的重要性,咱们能够明显的看到,Apple 的人工智能推进了设备上的机器学习,如图像和视频中的物体检测、语言分析、声音分类和文本识别等技术。

因此若是将来想继续在 iOS 上开发的话,机器学习可能会是一个必备的基础知识了(PS:若是你开发过 IntentConfiguration[45] 类型的小组件,我想你大概就明白我在说什么了)。

国内外客户端的使用现状

数据样本

去年咱们分析了国内外 App 使用 Swift 的状况,今年咱们继续走起。

扫描的原理借鉴了《如何检测 iOS 应用程序是否使用 Swift?》[46],这是我和好基友 OneeMe[47] 一块儿编写的。

App 排行榜的数据来源是 七麦数据[48] 提供的,日期为 2021 年 3 月 21 日,国内免费应用 Top 100 榜单[49] 和 国外免费应用 Top 100 榜单[50]

下面是扫描的结果:

序号 国内 App 版本 是否使用 Swift 国外 App 名称 是否使用 Swift
01 搜狗输入法 NO Twitter YES
02 百度地图 YES Uber YES
03 招商银行 YES Fontise YES
04 优酷 YES Prime Video YES
05 QQ 浏览器 NO Nike YES
06 QQ 音乐 YES Dasher YES
07 肯德基 YES Capital One YES
08 抖音极速版 NO PayPal YES
09 中国建设银行 YES Twitch YES
10 饿了么 NO Telegram YES
11 携程旅行 YES Translate YES
12 闲鱼 NO TV Remote YES
13 汽车之家 NO Life360 YES
14 WiFi 万能钥匙 YES Google Photos YES
15 微视 YES Walgreens YES
16 菜鸟 YES Pinterest YES
17 高德地图 NO Vrbo YES
18 知乎 YES Chase YES
19 手机营业厅 YES Starbucks YES
20 国家反诈中心 NO Pandora YES
21 58 同城 YES Google Docs NO
22 淘宝特价版 NO Waze YES
23 UC 浏览器 NO Credit Karma YES
24 小红书 YES MM Live YES
25 微博 NO Facebook YES
26 芒果 TV NO Amazon Alexa YES
27 天眼查 NO Snapchat YES
28 驾考宝典 NO Coinbase YES
29 探探 YES Xbox YES
30 我的所得税 NO ClassDojo YES
31 腾讯地图 NO Walmart YES
32 SOUL YES Google Maps NO
33 美柚 YES PicsArt YES
34 轻颜相机 YES Chrome NO
35 BOSS 直聘 NO Hulu YES
36 快手极速版 YES Outlook YES
37 做业帮 YES Disney+ YES
38 美图秀秀 YES CapCut YES
39 Chrome NO Booking.com YES
40 迅雷 YES Instagram YES
41 贝壳找房 YES Zelle YES
42 WPS Office YES Messenger NO
43 百度网盘 YES SHEIN YES
44 美团外卖 NO Google Duo YES
45 番茄小说 NO Zoom NO
46 中国工商银行 YES Roku YES
47 快手 YES Target YES
48 美颜相机 YES WhatsApp YES
49 七猫小说 YES Grubhub YES
50 滴滴出行 YES Postmates YES
51 微信 YES PS App YES
52 韩剧 TV YES Tinder YES
53 酷狗音乐 NO Hopper YES
54 惟品会 YES Shazam YES
55 爱奇艺 YES Itsme YES
56 哔哩哔哩 YES Bird YES
57 阿里巴巴 NO Uber Eats YES
58 京东金融 NO Netflix YES
59 醒图 YES Domino's YES
60 网易云音乐 YES Arch-US YES
61 支付宝 YES DoorDash YES
62 转转 YES Fetch Rewards YES
63 叮咚买菜 YES CBS Sports YES
64 今日头条 YES Shop YES
65 邮储银行 NO Spotify YES
66 懂车帝 YES TikTok YES
67 夸克 YES Lyft YES
68 美团 NO SoundCloud YES
69 喜马拉雅 YES WOMBO YES
70 得物(毒) YES Zillow YES
71 中国农业银行 NO TextNow YES
72 QQ 邮箱 YES HBO Max YES
73 钉钉 NO Discord YES
74 百度 YES Amazon Music YES
75 Top Widgets YES Google YES
76 Keep YES Google Drive YES
77 全民 K 歌 NO Airbnb YES
78 哈罗出行 NO Tubi YES
79 中国银行 YES Etsy YES
80 Days Matter YES IRL YES
81 新氧医美 NO Yelp YES
82 安居客 YES Peacock YES
83 企业微信 NO YouTube Music YES
84 中国移动 YES Venmo YES
85 手机淘宝 YES ESPN YES
86 云闪付 NO IRS2Go NO
87 QQ NO Ring YES
88 交管 12123 NO Wish YES
89 拼多多 YES ESPN YES
90 京东 YES Gmail YES
91 好看视频 YES Amazon NO
92 铁路 12306 NO Robinhood YES
93 大麦 YES YouTube NO
94 大众点评 NO Reddit YES
95 酷狗铃声 NO OfferUp YES
96 抖音 NO Musi NO
97 剪映 YES Widgetsmith YES
98 货拉拉 NO eBay YES
99 腾讯会议 NO Chick-fil-A YES
100 腾讯视频 NO Cash App YES

在 GitHub 上,其实还有一份统计数据 Snake List[51],是 Flexih[52] 统计的,除了 Swift 技术外,还统计了 Weex,React Native,Flutter 等技术的状况,你们能够做为参考。

2021 年

在国外 Top 100 的免费应用中,Swift 混编占比 91%。

在国内 Top 100 的免费应用中,Swift 混编占比 59%。

在以前的文章中,《一次关于 Swift 在 iOS 生态圈里的现状调研》,咱们也整理过一些数据。

在 2019 年,国内的 Swift 混编应用占比为 22%,国外的 Swift 混编应用占比 78%, 在 2020 年,国内的 Swift 混编应用占比为 30.4%,国外的 Swift 混编应用占比 82.3%。

若是将近几年的数据连着看,Swift 在国内外的变化趋势以下图所示:

数据解读

纯看数据的话:

  • 在国内,Swift 混编占比达 59%,较去年的 30%,又增加了 29%,总体占比也已通过半了!
  • 在国外,Swift 混编占比 91%,较去年的 82.3%,又增加 9%,纯 Objective-C 的应用也只有个位数占比了。

那么咱们再分析一些数据背后的内容:

  • 从表面看,除了去年提到的 BAT 以外,今日头条,快手,滴滴,支付宝,京东,拼多多等一众应用也都在今年完成了 Swift 的初体验,比较有意思的是美团系的应用(美团,大众点评,美团外卖)目前彷佛尚未任何动静。
  • 虽然国内的 Swift 混编占比变高,但我我的认为,这并表明国内大部分公司要开始转型 Swift 技术了,这样的变化,主要是由于去年 Apple 新增的 Widget 技术致使的,由于想开发 Widget 必须使用 Swift 相关的技术,而上面提到的各个应用,大多都提供了相应的小组件。
  • 若是历史有能够借鉴的地方,那么 2021 年的国内 Swift 占比(59%)与 2019 年的国外占比(78%)还算比较接近,至少不像去年(30% 和 82.3%)的差距那么大,那么按照这个趋势发展的话,咱们是否能够预言在将来的 3-5 年内,国内的 Swift 混编应用占比也将达到 90% 左右?

PS:在写这篇文档的时候,发现微博也支持小组件了,因此估计上面的这个数据又得增长 1% 了。

总结与展望

在作完了今年的调研后,咱们能得出什么结论呢?

  • 虽然看起来现阶段的 Swift 仍是在一个积累的过程,但随着 WidgetKit 这个标志性的 SDK 诞生,我相信这个发展阶段会从积累阶段慢慢转向发展期,毕竟如今 ABI 稳定了,Module 稳定了,对二进制组件的支持也有了,还有 Swift 语言自己的版本变化也逐渐稳定了,这些都给与了 Swift 很好的支持。
  • Swift 的发展方向毫不只是为了 Apple 生态体系内的那点事儿,这个从社区的规划也好,从 Timac 的那几篇分析文章也好,咱们均可以看出它在多元发展上的决心,Swift 真的很想破圈。
  • 国内的 Swift 发展被去年的 iOS 14 新特性给盘活了,WidgetKit 功不可没,虽然还不能给出大部分公司都将转型的结论,但至少绝大部分互联网的头部公司已经兼容了 Swift 的开发,这是一个好的开始,相信在可见的将来,Apple 的转型决心必然会让国内的公司会更加剧视这方面工做的重要性。

在最后,我来讲说这一年的一些其余见闻:

虽然不久前 Google 归档了 Swift for TensorFlow[53] 项目,让不少人看衰 Swift 在机器学习或者人工智能方面的发展,但其实我以为是有点不必,Swift 在这方面的发展其实并不依赖 Google,Apple 本身在这方面就颇有建树,若是感兴趣应该看看 Machine Learning Research at Apple[54] 这个网站,这才表明 Apple 和 Swift 在机器学习方面的真实水平。

另外,虽然仍是能在某些技术群里看到 "Swift 无用","Swift 火不了","咱们不须要用 Swift 开发" 的字眼,但这样的数量相比于前几年而言,真的愈来愈少了。

另外据我所知,字节跳动的抖音团队会在 2021 年的 Q2 季度所有迁移成 Swift 技术栈,这个迁移不只是上层的业务变更,彷佛也包括了底层的基础库,这意味着他们在不远的将来将会统一使用 Swift 进行开发;同时,我也据说了快手团队正在大力发展 Swift 方面的建设。

虽然这只是国内诸多公司的个例,但我相信随着这些头部大厂的加入,Swift 成为原生开发的主流趋势会在国内愈来愈明显,固然不得不认可,跨端技术在国内也有着极大的市场份额,因此估计将来做为 iOS 端上的程序员,可能要具有 Objective-C,Swift,JavaScript/TypeScript 和 Flutter 的语言技术栈。

好了,今年的调研报告就到此结束了,咱们明年见!

参考文档

  • SketchK - 一次关于 Swift 在 iOS 生态圈里的现状调研
  • Paul Hudson - Hacking with Swift - What’s new in Swift 5.3? [55]
  • Paul Hudson - Hacking with Swift - What’s new in Swift 5.4? [56]
  • Swift.org forum - On the road to Swift 6 [57]
  • TIOBE [58]
  • PYPL [59]
  • GitHut 2.0 [60]
  • Apple - Apple Developer Documentation [61]
  • Timac - Comparing iPhone OS 1.0 with iOS 14 using tree maps [62]
  • Timac - Evolution of the programming languages from iPhone OS 1.0 to iOS 14 [63]
  • Timac - Apple’s use of Swift and SwiftUI in iOS 14 [64]
  • Timac - 如何检测 iOS 应用程序是否使用 Swift?
  • OneeMe - Swift App Analyzer [65]
  • Flexih - Snake List [66]
  • Apple - Machine Learning Research at Apple [67]

参考资料

[1]

SE-0276: https://github.com/apple/swift-evolution/blob/master/proposals/0276-multi-pattern-catch-clauses.md

[2]

SE-0279: https://github.com/apple/swift-evolution/blob/master/proposals/0279-multiple-trailing-closures.md

[3]

SE-0266: https://github.com/apple/swift-evolution/blob/master/proposals/0266-synthesized-comparable-for-enumerations.md

[4]

SE-0269: https://github.com/apple/swift-evolution/blob/master/proposals/0269-implicit-self-explicit-capture.md

[5]

SE-0281: https://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.md

[6]

SE-0267: https://github.com/apple/swift-evolution/blob/master/proposals/0267-where-on-contextually-generic.md

[7]

SE-0280: https://github.com/apple/swift-evolution/blob/master/proposals/0280-enum-cases-as-protocol-witnesses.md

[8]

SE-0277: https://github.com/apple/swift-evolution/blob/master/proposals/0277-float16.md

[9]

SE-0268: https://github.com/apple/swift-evolution/blob/master/proposals/0268-didset-semantics.md

[10]

SE-0271: https://github.com/apple/swift-evolution/blob/master/proposals/0271-package-manager-resources.md

[11]

SE-0278: https://github.com/apple/swift-evolution/blob/master/proposals/0278-package-manager-localized-resources.md

[12]

SE-0272: https://github.com/apple/swift-evolution/blob/master/proposals/0272-swiftpm-binary-dependencies.md

[13]

SE-0273: https://github.com/apple/swift-evolution/blob/master/proposals/0273-swiftpm-conditional-target-dependencies.md

[14]

SE-0287: https://github.com/apple/swift-evolution/blob/main/proposals/0287-implicit-member-chains.md

[15]

SE-0284: https://github.com/apple/swift-evolution/blob/main/proposals/0284-multiple-variadic-parameters.md

[16]

SE-0289: https://github.com/apple/swift-evolution/blob/main/proposals/0289-result-builders.md

[17]

SR-10069: https://bugs.swift.org/browse/SR-10069

[18]

SE-0294: https://github.com/apple/swift-evolution/blob/main/proposals/0294-package-executable-targets.md

[19]

SE-0281: https://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.md

[20]

Ted Kremenek: https://twitter.com/tkremenek?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor

[21]

swift.org forum: https://forums.swift.org/categories

[22]

On the road to Swift 6: https://forums.swift.org/t/on-the-road-to-swift-6/32862

[23]

Saleem Abdulrasool: https://github.com/compnerd

[24]

Tom Doron: https://github.com/tomerd

[25]

TIOBE: https://www.tiobe.com/tiobe-index/

[26]

PYPL: https://pypl.github.io/PYPL.html

[27]

GitHut 2.0: https://madnight.github.io/githut/#/pull_requests/2021/1

[28]

Nordic Semiconductor: https://www.nordicsemi.com/

[29]

GitHub 页面: https://github.com/NordicSemiconductor

[30]

Swift 版本: https://github.com/NordicSemiconductor/IOS-Pods-DFU-Library

[31]

Java 版本: https://github.com/NordicSemiconductor/Android-DFU-Library

[32]

RoadMap: https://github.com/firebase/firebase-ios-sdk/blob/master/ROADMAP.md

[33]

Apple Developer Documentation: https://developer.apple.com/documentation/technologies

[34]

System: https://developer.apple.com/documentation/System

[35]

WidgetKit: https://developer.apple.com/documentation/WidgetKit

[36]

SCSIControllerDriverKit: https://developer.apple.com/documentation/scsicontrollerdriverkit

[37]

Professional Video Applications: https://developer.apple.com/documentation/professional_video_applications

[38]

IOUSBHost: https://developer.apple.com/documentation/iousbhost

[39]

Timac: https://github.com/Timac

[40]

Apple’s use of Swift and SwiftUI in iOS 14: https://blog.timac.org/2020/0927-state-of-swift-ios14/

[41]

Evolution of the programming languages from iPhone OS 1.0 to iOS 14: https://blog.timac.org/2020/1019-evolution-of-the-programming-languages-from-iphone-os-to-ios-14/

[42]

iOS 14.0 (18A373) 统计: https://blog.timac.org/2020/1019-evolution-of-the-programming-languages-from-iphone-os-to-ios-14/iOS14.txt

[43]

Comparing iPhone OS 1.0 with iOS 14 using tree maps: https://blog.timac.org/2020/1122-comparing-iphone-os-with-ios-14-using-tree-maps/

[44]

矩形式树状结构绘图法: https://www.wikiwand.com/zh/%E7%9F%A9%E5%BD%A2%E5%BC%8F%E6%A0%91%E7%8A%B6%E7%BB%93%E6%9E%84%E7%BB%98%E5%9B%BE%E6%B3%95

[45]

IntentConfiguration: https://developer.apple.com/documentation/widgetkit/intentconfiguration

[46]

如何检测 iOS 应用程序是否使用 Swift?: https://mp.weixin.qq.com/s/vF_oOWFLimlyRi4mZpgpeQ

[47]

OneeMe: https://github.com/OneeMe

[48]

七麦数据: https://www.qimai.cn/

[49]

国内免费应用 Top 100 榜单: https://www.qimai.cn/rank/index/brand/free/device/iphone/country/cn/genre/5000/date/2021-03-21

[50]

国外免费应用 Top 100 榜单: https://www.qimai.cn/rank/index/brand/free/device/iphone/country/us/genre/5000/date/2021-03-21

[51]

Snake List: https://github.com/flexih/SnakeList

[52]

Flexih: https://github.com/flexih

[53]

Swift for TensorFlow: https://github.com/tensorflow/swift

[54]

Machine Learning Research at Apple: https://machinelearning.apple.com/

[55]

Paul Hudson - Hacking with Swift - What’s new in Swift 5.3?: https://www.hackingwithswift.com/articles/218/whats-new-in-swift-5-3

[56]

Paul Hudson - Hacking with Swift - What’s new in Swift 5.4?: https://www.hackingwithswift.com/articles/228/whats-new-in-swift-5-4

[57]

Swift.org forum - On the road to Swift 6: https://forums.swift.org/t/on-the-road-to-swift-6/32862

[58]

TIOBE: https://www.tiobe.com/tiobe-index/

[59]

PYPL: https://pypl.github.io/PYPL.html

[60]

GitHut 2.0: https://madnight.github.io/githut/#/pull_requests/2021/1

[61]

Apple - Apple Developer Documentation: https://developer.apple.com/documentation/technologies

[62]

Timac - Comparing iPhone OS 1.0 with iOS 14 using tree maps: https://blog.timac.org/2020/1122-comparing-iphone-os-with-ios-14-using-tree-maps/

[63]

Timac - Evolution of the programming languages from iPhone OS 1.0 to iOS 14: https://blog.timac.org/2020/1019-evolution-of-the-programming-languages-from-iphone-os-to-ios-14/

[64]

Timac - Apple’s use of Swift and SwiftUI in iOS 14: https://blog.timac.org/2020/0927-state-of-swift-ios14/

[65]

OneeMe - Swift App Analyzer: https://github.com/ZRTransmitter/SwiftAppAnalyzer

[66]

Flexih - Snake List: https://github.com/flexih/SnakeList

[67]

Apple - Machine Learning Research at Apple: https://machinelearning.apple.com/



本文分享自微信公众号 - 一瓜技术(tech_gua)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。