# 老司机 iOS 周报 #160 | 2021-05-24

![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)：公众号后台不时都有读者发送一些希望查询检索的词语，为此我们根据“个人经验”设置了几条较常见的内容，并配上对应的 GitHub 检索页面和可能有的专辑链接。已经设置的关键词有 **招聘**、**flutter**、**swift**、**webview**、**swiftui**、**性能优化**和 **IAP** 等。

当然，我们更鼓励喜欢自己动手，丰衣足食的朋友，目前检索周报内容有两种方式：

- 到我们 [GitHub Repo 利用 “Search In Repo” 的功能](https://github.com/SwiftOldDriver/iOS-Weekly/search?q=swift) 对周报全仓库内容进行检索
- 到我们微信公众号主页的右上角搜索功能进行公众号内检索，由于我们迁移过一次公众号，这种搜索方式只能搜索去年下半年开始的内容

### 🌟 周报公众号代发内推信息事宜

[@Parsifal](https://github.com/ParsifalC)：目前客户端，尤其是 iOS 岗位，都比较缺乏高级工程师，理解各位招聘负责人的不容易。所以周报目前是友情代发招聘信息不收费，以后也不会收费。但正如大家所看到的那样，我们收到的招聘信息只会放在次条推送，而次条则依赖于我们首条的文章。所以首条如果没内容的话，自然就不会有次条了。这就导致如果招聘需求多的话，就会排队比较久。介于这种情况，我们很希望大家向我们公众号投稿，以稿发招聘信息，我们会将该招聘需求从队列里提前发送，并且从招人诚意上来看，用一篇值得大家认可的文章来切入招聘，也会更有说服力，得到曝光的机会也更多。

最后，所有招聘事宜和投稿事宜，可以加 V 联系 **iTDriverr**。

## 文章

### 🐢 [Flutter 2.0 iOS 包大小优化 ](https://juejin.cn/post/6959811895645700132/)

[@邦Ben](https://weibo.com/linwenbang)：该文章介绍了在 Flutter 2.0 下如何拆分 AOT 编译产物，以实现动态下发这部分产物从而达成包体积优化的目的。Flutter 2.0 对比 1.x 的版本来说调整了不少流程，因此对于做过 1.x 拆分的同学升级会有所有帮助，想了解整体加载流程的话也值得一看。不过这里值得注意，任何动态下发都会存在失败率的可能，因此如果你的 APP Flutter 作为核心部分不可缺少的话，并不太建议做拆分，也需要考虑好容错降级的处理，同时 iOS 的包体积要求一般也相对宽松。

### 🐕 [iOS 极致速度优化：快速打开任意 APP 的设置界面](https://mp.weixin.qq.com/s/DpLy_o3wMpZauiPnU1aSBw)

 [@含笑饮砒霜](https://weibo.com/chinafishnews/)：本文通过分析 [UIApplication openURL:] 的背后逻辑，提供了一种打开任意 APP 设置页面的方法。同时也可以发现，该方案可以减少了很多检验逻辑，并减少了 xpc 调用，可以大幅度提升打开设置页面的速度。

### 🌟 🐕 [探索微信聊天 UI 逻辑实现](https://everettjf.github.io/2016/06/19/reverse-explore-wechat-message-design/)

[@zvving](https://github.com/zvving)：『聊天页面 cell 有两种实现方式：一种是每类消息定义不同 Cell，另一种是微信的实现方式。』是段子也是事实。本文作者 [Everettjf](https://everettjf.github.io/about/) 详细记录逆向执行及分析过程，带你一起了解微信聊天界面的实现方式，是不可多得的逆向学习案例。

> 文章成于 2016 年，经与微信同学确认，诸多内容已经调整，文章逆向的探索过程依旧值得学习。

### 🌟 🐢 [普通技术人的成长路径 - 一位客户端老兵的经验之谈](https://mp.weixin.qq.com/s/IrSQyyc0J3SXBuWs9M3SYA)

[@折腾范儿_唯敬](https://weibo.com/agvicking/)：做客户端的同学或多或少都会进入一些迷茫期，客户端这条路的发展有多深？我该如何提升自己？如何摆正自己的心态来面对现今工作上越来越多的焦虑？不妨看看牟爽的这一篇经验之谈，看看过来人这一路是如何走过来的。整篇文章更多是老兵的个人感慨分享，因为每个人的工作经历与成长历程不同，老兵在文中所讲的也许不见得能100%和每个人不同的经历产生共鸣，而且短短的文字无法深刻的表达出这些真实经历背后真实的故事所对应的思考。但相信老兵的感慨是能够让读者感受到真诚与一些作为经历过人的苦口婆心，有不解和困惑也欢迎和老兵进一步进行交流与解惑

### 🐢 [【译】SE-0306 Actors](https://github.com/SwiftOldDriver/iOS-Weekly/issues/2792)

[@四娘](https://kemchenj.github.io/)：Swift 在下个版本 5.5 将会带来 async/await 语法的支持，它解决的是异步编程控制流复杂的问题，让我们可以像同步代码一样去组织代码的控制流。

从异步迈向并发的路上，我们还需要考虑如何组织调度这些异步操作，并且避免并发数据访问带来的数据竞赛问题。Swift 选择了 Actor 作为它的并发模型，**将 actor 作为一种新的类型引入，并且为其提供了静态的 data-race 检测**。

这是自 1.0 版本之后首次引入的新类型，足以说明这次改动之大，与过去两年的小修小补不同，强烈推荐大家阅读这份提案，它将会在未来两三年，影响 Swift 编程模型的方方面面。

### 🐎 [越狱 iOS app 砸壳这件事儿](https://mp.weixin.qq.com/s/xFHA2tlc6HCLti_ihlrsZA)

[@Damien](https://github.com/ZengyiMa)：你对逆向感兴趣吗？在所有逆向教程中都会从砸壳这一步开始，那么什么是砸壳呢？以及砸壳的原理是什么呢？那就一起来深入了解一下吧，本文会详细介绍如何砸壳，以及砸壳的多种思路和手段。对想了解逆向知识的同学是个不可多得的入门教程。

## 摸鱼周报

[@摸鱼周报 #11](https://mp.weixin.qq.com/s/hE9wYlLX8F1sKjIF5eIPVQ)：本期摸鱼周报带来了 **程序员必知的硬核知识大全** 的内容解读，它由 [crisxuan](https://github.com/crisxuan/bestJavaer) 整理完成，经作者授权该 PDF 已经放在了周报仓库里，有兴趣的同学可以下载阅读全文。我们以概念的形式对一些重要知识进行解释，会分三期，本期周报是第一期内容，包含有：CPU、寄存器、程序计数器、内存，IC 等内容的介绍。

另外我们还总结了几个实用的 Tips ：如何在不继承第三方 SDK 的情况下完成对应的身份验证以及如何使用 Charles 为 Apple TV 端的网络请求进行抓包。

## 代码

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

[@水水](https://www.xuyanlan.com)：使用 Swift 实现的计算 UIImage 各颜色占比的工具。

> 由 [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）
