# 老司机 iOS 周报 #157 | 2021-04-26

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/ios-weekly.png?raw=true)
老司机 iOS 周报，只为你呈现有价值的信息。

你也可以为这个项目出一份力，如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们，我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。

## 公告

[@Parsifal](https://github.com/ParsifalC)：本期是节前最后一期，5.1 期间周报停更，我们 5.10 再见！

## 新闻

### [使用 Xcode 12 和 iOS 14 SDK 提交更新](https://developer.apple.com/cn/news/?id=ib31uj1j)

[@Parsifal](https://github.com/ParsifalC)：自 2021 年 4 月 26 日起，所有提交至 App Store 的 iPhone 和 iPad app 都必须使用 Xcode 12 和 iOS 14 SDK 或更高版本来构建。另外，这两天有部分读者表示 iTunes Connect 网站使用异常，其实苹果在 WWDC 2018 里就宣布启用 App Store Connect 服务了，**我们现在应该使用 https://appstoreconnect.apple.com/ 来进行管理。**

### [WWDC 2021 Swift Student Challenge Submissions](https://wwdc.github.io/2021/)

[@Damien](https://github.com/ZengyiMa)：一年一度的 Swift 学生挑战赛开始啦，快来看看吧。胜者将会获得特别的 WWDC21 外套、定制别针套装和为期一年的苹果开发者计划会员资格。请踊跃参加吧。

## 文章

### 🌟 🐕 [Swift 2021 生态调研报告](https://mp.weixin.qq.com/s/5SXAozM2c6Ivyzl7B9IfQQ)

[@JonyFang](https://github.com/JonyFang)：一份 Swift 2021 生态调研的报告。虽然看起来现阶段的 Swift 还是在一个积累的过程，但随着 WidgetKit 这个标志性的 SDK 诞生，发展阶段逐渐从积累阶段转向发展期，毕竟目前 ABI 稳定了、Module 稳定了、对二进制组件的支持也有了、Swift 语言本身的版本变化也逐渐稳定，这些都给予了 Swift 很好的支持。Swift 的发展方向看上去不只是为了 Apple 生态体系内，从社区的规划及 Timac 的几篇分析文章可以看出 Swift 在多元发展上（破圈）的决心。国内的 Swift 发展被去年的 iOS 14 新特性盘活了，WidgetKit 功不可没，虽然文中未给出大部分公司都将转型的结论，但至少绝大部分互联网的头部公司已经兼容了 Swift 的开发，这是一个好的开始，相信在可见的未来，Apple 的转型决心会让国内的公司更重视这方面工作的重要性。

本篇主要结合下面几个纬度分析了 2021 年 Swift 在 iOS 整个生态圈的现状：

1. Swift 语言
	- 版本变化
	- On the road to Swift 6
2. 技术社区
	- 语言排行榜
	- 社区活跃度
	- 商用 SDK 的技术选型
3. Apple 生态
	- SDK 能力
	- 原生 App 分析
	- iOS 中不同编程语言的发展
4. 国内外客户端的使用现状
	- 数据样本
	- 2021 年现状
	- 数据解读
    
### 🌟 🐢 [基于 Flutter 的 Web 渲染引擎「北海」正式开源](https://mp.weixin.qq.com/s/tnHbceedNsoKgMrgoTyyuA)

[@CrazyCoderShi](https://github.com/CrazyCoderShi)：单看标题想必大家已经有一个大致的猜测，不错，淘系技术团队基于 Flutter 做了一个跨端的渲染框架，你可以使用完全的前端开发方式来写 Flutter，同样的前端开发中可以用到的工具 / 框架等，都可以无缝用到该项目中，棒极了！！！并且 Kraken 完全按照 W3C 标准，同时对一些组件做了性能优化，比如滚动组件.

### 🐕 [Why Swift closures are not Equatable](https://www.jessesquires.com/blog/2021/04/05/why-swift-closures-are-not-equatable/)

[@极速男孩](https://github.com/ztlyyznf001)：Swift 中的闭包与 C 和 Objective-C 中的代码块或者其他语言中的匿名函数类似，但是当我们用 == 或者 === 去比较两个闭包时都会报错，这篇文章解释了为什么不能比较两个闭包，以及如果可以比较两个闭包所带来的问题。

### 🐎 [开源神器：可快速在 iOS 设备上安装 Windows、Linux 等操作系统！](https://mp.weixin.qq.com/s/Q8CvdNBnpoLow98MM1MZ1g)

[@老驴](https://www.weibo.com/6090610445)：有没有想过在 iOS 上运行其他操作系统？按照现在 iPhone 的计算性能，性能上完全可以的。国外的一位叫 osy86 的开发者就搞出了这样的一个虚拟机，可以让你在 iPhone 上跑任意操作系统。不过因为 iOS 本身的限制，你需要自己签名或者在越狱的机器上安装。兴趣的可以试试看。

### 🐎 [Getting Ready for App Tracking Transparency](https://swiftsenpai.com/development/get-ready-apptrackingtransparency/)

[@老峰](https://swiftsenpai.com/development/get-ready-apptrackingtransparency/)：4 月 6 日 Apple 发布公告 [Get ready for AppTrackingTransparency](https://developer.apple.com/news/?id=8h0btjq7) 要求开发者如果应用有收集用户数据，并出于跨应用和网站跟踪的目的与第三方分享用户数据，那么从 iOS 14.5 必须通过 AppTrackingTransparency 框架获得用户授权。文章简要介绍了 IDFA 概念，以及如何接入 AppTrackingTransparency框架，有需求的同学建议阅读。

### 🐕 [Every SwiftUI protocol explained](https://www.fivestars.blog/articles/swiftui-protocols/)

[@AidenRao](https://weibo.com/AidenRao)：本文详细介绍了 SwiftUI 定义的 54 种协议，例如：核心协议 View 和 ViewModifier 用于定义视图和视图修饰符。APP 和 Scene 使 APP 的完整生命周期都可以基于 SwiftUI 实现。19 种 styles 协议用于修饰 label，button 等特定视图，Shape 和 InsettableShape 用于定义形状，Animatable 和 AnimatableModifier 用于实现动画。

## 工具

### [GitHub 缓存加速网站：GitClone](https://gitclone.com/)

[@J_Knight_](https://github.com/knightsj)：该网站提供了远程缓存 GitHub 库的方案：可以提高从 GitHub clone 代码的速度。具体有三种使用方法：
1. 替换 url：将 gitclone.com 嵌入到克隆地址
2. 设置 git 参数
3. 使用 cgit 客户端

详细的介绍可以进入该网站主页查看：https://gitclone.com

## 代码

### [ExposureKit](https://github.com/623637646/ExposureKit)

[@红纸](https://github.com/nianran)：ExposureKit 是一款检测 View 曝光库，一行代码即可集成，让业务曝光数据统计分析变得更方便。该库同时支持 Swift/OC 的检测，其功能基于原作者 [Yanni Wang 王氩](https://github.com/623637646) 的另外一个仓库 [EasySwiftHook](https://github.com/623637646/SwiftHook/blob/master/Documents/README.zh-Hans.md) 实现函数 Hook。

> 自荐：[Yanni Wang 王氩](https://github.com/623637646)

## 赞助者

虚位以待..

**非常感谢以上赞助者的支持，如果你也有赞助我们的兴趣，欢迎添加微信 iTDriverr 哦~**

## 内推

老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。

如果你想**找工作**，点这里：https://www.yuque.com/iosalliance/article/bhutav

如果你想**招人**，点这里：https://www.yuque.com/iosalliance/article/ycyhf3

当然，也欢迎你关注我们每一期的周报，我们会在每期周报底部及时更新编辑内推岗位。

## 关注我们

我们开通了公众号，每期发布时公众号（LSJCoding）会推送消息，欢迎关注。

![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true)

同时也支持了 RSS 订阅：https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。

## 说明

🚧 表示需某工具，🌟 表示编辑推荐

预计阅读时间：🐎 很快就能读完（1 - 10 mins）；🐕 中等 （10 - 20 mins）；🐢 慢（20+ mins）
