# 老司机 iOS 周报 #158 | 2021-05-10

![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) 提出。

## 福利

极客时间戴铭老师的「[iOS 开发高手课](https://time.geekbang.org/column/intro/100024501?code=0eTznNzpAbVisw%2FesJ9iM9iraIX21mfPuPgxm1jY5tI%3D)」**优惠活动截止时间是 5.12**，想要购买的读者可以通过周报二维码渠道，不仅**享受半价**，而且我们会将官方返现的 **20 元全额退款**给大家。更多详细内容可以参考 - [系统构建自己的 iOS 知识体系](https://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&tempkey=MTExMl9EcWloZVlNQyt6MjA1NS9pUEVtQ2RIY2JwcE1nQV9HeERVVkJBZk0zTVZjb2dCLUZaZEtsT1M3aFFCcURwM3ZJLU85OWVzYm9fei1UcnJRN2tDOVNFcGdkdDVoMElpcC1sMXNkd21LeWZaSEJWalRGNkQ2d25Bb012MWYxa2dnRmxGWFNWeGd6N0lCbk9rV1AxcWJRRW42X1Y3c3hEZW40M194c05Bfn4%3D&chksm=6aa285285dd50c3ef2fed31f056abbd0e6b0b9f0512b8ff8ec2e1560716fda253d1c28ecf600#rd)。

## 新闻

### 周报开通视频号了！

[@Parsifal](https://github.com/ParsifalC)：号外号外！！周报编辑组正式开通微信视频号了！为了丰富我们的内容形式，更好地将优质知识传递给大家，我们接下来也会尝试不同的方法。WWDC 2021 临近，我们今年也在考虑更多样化的『WWDC 内参』活动，关注视频号，或许 6 月有惊喜哦（**开通直播服务需要 1000+ 粉丝，希望大家多多帮忙！**）~

> **iTDriverr** 视频号开通在周报微信号里，欢迎大家添加！

### [swift-5-4-released](https://swift.org/blog/swift-5-4-released/)

[@享耳先森](https://github.com/iblacksun)：五一长假前 Apple 随 Xcode 12.5 一起发布了 Swift 5.4 版，除 `Result 生成器` 等新特性外，5.4 主要集中在编译和运行性能的提升，具体内容也可以参考「知识小集」翻译的[这篇文章](https://mp.weixin.qq.com/s/CKx-UhzBkhDMDvDbzjX09g)。

## 文章

### 🌟 🐎 [美团做 React Native 性能优化的三个关键点](https://mp.weixin.qq.com/s/2D2l7NF0kmwAkfCI_PbZug)

[@looping](https://github.com/looping)：这是一篇 InfoQ 对美团移动端的采访记录，提到了美团在 React Native 性能优化实践层面的一些经验，以及对于技术框架选型的一些建议。里面讲的有些点还是比较干的，像是预告片，期待之后能在 QCon 大会上稀释下。本文可作为大纲参考，对罗列的问题结合我们自身的实际情况来分析，再看下跟大厂的差距，找到提升空间和下一阶段的演进方向。

### 🌟 🐕 [解读 Flutter 中热重载原理](https://mp.weixin.qq.com/s/Rd03kZLr26AJGcW2RXZc3w)

[@Parsifal](https://github.com/ParsifalC)：相比于前端圈子，开发调试体验是客户端人员挺头疼的痛点。而近些年 React Native/Weex/Flutter 等跨端框架吸引人的一方面也是其**热重载**这一开发体验，早之前社区有利用 File Watcher 监听文件变化并通过动态库注入与 runtime 在模拟器上实现热重载的 [InjectionIII](https://github.com/johnno1962/InjectionIII) ，甚至苹果自己也在 SwiftUI 上支持了实时预览。本文则基于 Flutter 源码，解读了 Flutter 是如何用 Dart 语言特性和 DartVM 实现其热重载功能。全文思路比较清晰，如果你也对 flutter 热重载机制有很大兴趣，阅读此文，应该能解决掉不少你的疑问。

### 🌟 🐕 [干货 | 携程火车票 Flutter 最佳实践](https://mp.weixin.qq.com/s/VP6WEQkEel3W4tdo3ThYDw)

[@CrazyCoderShi](https://github.com/CrazyCoderShi)：本文介绍了携程火车票选择 Flutter 的初衷，Provider  状态管理的实际使用，建议 Flutter 主体的构架采用 MVVM 模式，还介绍了一些 Flutter 性能检测、量化工具和一些性能优化点供大家参考。收集了 Flutter 开发过程中常见并且大量发生的问题，并提供了相应的解决方案。

### 🐢 [听说你想写个渲染引擎（布局树 + 绘制）](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485323&idx=1&sn=af965b57deaa2aabdd990348f7aa09ce&chksm=cf558843f822015544defa0c6af508642c840fc53f418c80d37b1af9b0018144b5139d6162f5&token=1028691144&lang=zh_CN#rd)

[@xiaofei86](https://github.com/xiaofei86)：讲述浏览器渲染引擎工作原理的系列文章，代码[开源](https://github.com/silan-liu/tiny-web-render-engine-swift)。作者参考了 “动手写浏览器渲染引擎” 系列文章，原文用 rust 编写，作者使用 Swift 进行了重写。

根据渲染引擎的工作流程，分为 “HTML 解析”、“CSS 解析”、“生成样式树”、“生成布局树”、“绘制” 5 篇内容。在往期周报中，我们已经推荐前 3 篇，本期作者更新了最后 2 篇。至此，本系列已全部完结，感兴趣的读者可以一起动手练习，对我们理解现代浏览器渲染引擎的工作原理会有所帮助。
 
### 🐎 [How OrderedSet works](https://oleb.net/2021/ordered-set/)

[@四娘](https://kemchenj.github.io/)：新的 [Swift Collection](https://swift.org/blog/swift-collections/) 库为我们带来了一些实用的集合数据结构，在这篇文章里作者就为我们分析了其中 OrderedSet 的实现方式。

## 代码

### [GetX](https://github.com/jonataslaw/getx)

[@Damienn](https://github.com/ZengyiMa)：GetX 是 Flutter 的一个轻巧并且强大的库。它具有高性能的状态管理、智能的依赖注入和路由管理的能力。并且 GetX 围绕着研发的生产力、高性能和优秀的代码架构这 3 点设计原则去整体性的设计，对于使用 Flutter 的同学不妨一试。

### [ResponderChain](https://github.com/GodL/ResponderChain)

[@红纸](https://github.com/nianran)：ResponderChain 提供了一种通过响应者链传递事件/数据的新方式，有别于传统 iOS 开发中 delegate 与 block 的形式，无需找到具体实例，即可进行数据和事件的传递。

> 自荐：[GodL](https://github.com/GodL)

## 音视频

### [GGTalk | 某 C：两年前从合肥去广州，两年后从广州回合肥，我为什么放弃一线城市和一线大厂](https://www.xiaoyuzhoufm.com/episode/6087ff41d99c5b06d55584f7?s=eyJ1IjoiNWU3ZDRiZTBhMmYyZTUwM2NlYzQzZTM3IiwiZCI6MX0%3D)
 
 [@含笑饮砒霜](https://weibo.com/chinafishnews/)：这是一篇值得一听的播客，请到的嘉宾是两年前从合肥去广州，两年后又从广州回合肥的 BNC。这两年在微信工作的 BNC 也谈到了大家比较感兴趣的一些问题，比如在微信的工作体验以及为什么离开微信，微信为什么总是被骂等。逃离北上广还是回到北上广这几年时常会引起社会讨论，这是一个没有标准答案的选择，不管在哪里，遵从自己的内心，我们终将都有光明的未来！

## 赞助者

虚位以待..

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

## 内推

> 哈啰出行（杭州/上海）招聘 资深/专家 iOS 开发工程师，参与哈啰出行 App 的软件架构设计 / 日常迭代开发；负责客户端应用优化及相关领域的技术探索；有大中型项目的开发经验优先，有跨端 (Flutter/ReactNative) 项目开发经验优先，有安全性、性能优化经验的优先。联系方式：邮箱：shishaoyong11215@hellobike.com 微信：CrazyCoder_SY

老司机周报团队联合知识小集和 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）
