# 老司机 iOS 周报 #143 | 2021-01-04

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

## 2021

[@Parsifal](https://github.com/ParsifalC)：先说句迟到的新年快乐！2020 年终于过去了，崭新的一年也已经到来。在所有编辑的努力以及广大读者的支持下，很感恩周报又和大家一起度过一年。这是周报第 143 期，也是 2021 年的第 1 期，愿我们还能一起成长~

> 在朋友圈刷屏年终总结的时候，我们也做了个小活动 - [【请查收】你的 2020 年度 Github 报告](https://mp.weixin.qq.com/s/eBw4gS6-Y8ZYNReF3pbHng)，感兴趣的读者可以参与下~另外，想加入周报读者群的朋友可以添加 iTDriverr 为好友。

## WWDC20

本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章，每篇都很精彩！

- [Sirikit 和 Shortcuts 的新特性](https://mp.weixin.qq.com/s/gw35JpL_JhGXIjVybxNM3Q)
- [SiriKit 新变化：评估优化 App 的语音交互](https://mp.weixin.qq.com/s/U9dgIg-cJn0kAWI4Uj7V7A)

## 文章

### 🐕 [Flutter 中一行文字到屏幕上，渲染全过程！](https://mp.weixin.qq.com/s/RAM3GbJ_vjnC_JcgNrFKtg)

[@极速男孩](https://github.com/ztlyyznf001)：flutter 中除了我们熟悉的 StatelessWidget 和 StatefluWidget 两个 Widget 以外，还有InheritedWidget、 RenderObjectWidget 这种 Widget。 这篇文章主要通过一步步的解析源码中如何使用 RenderObjectWidget 中的 RenderParagraph 来将 RichText 渲染到屏幕中的。然后通过去自定义一个文本的组件来进一步了解如何使用 RenderObject 来渲染文字的。

### 🐢 [今日头条优化实践： iOS 包大小二进制优化](https://mp.weixin.qq.com/s/TnqAqpmuXsGFfpcSUqZ9GQ)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：苹果对 iOS App 大小有严格的限制，包括下载大小和可执行文件的大小。本文从背景知识和面临的实际问题出发，介绍了 `__TEXT` 段迁移技术及减少下载大小的原理，描述了我们在实践过程中遇到的问题，并从源码的角度详细分析了问题产生的根本原因以及解决方式，解答了相关疑问和上线后遇到的问题。需要注意的是，由于苹果在 iOS 13 已经对下载大小做了优化，所以本文方案无法再对 iOS 13 及更高系统的设备的下载大小进一步优化。

### 🐕 [百度App Objective-C/Swift 组件化混编之路（二）](https://mp.weixin.qq.com/s/xA3g0GdNvfKNgfvG6imEvw)

[@JonyFang](https://github.com/JonyFang)：本文主要以依赖管理工具 EasyBox 工具链为支撑，介绍百度 App 如何实现组件内的 Objective-C/Swift 混编、单侧、二进制发布和集成，以及组件间的依赖和引用。

对于开发者来说，不用去关心混编是如何实现的，只需要和正常开发一样，组件内引用所需的头文件（#import <ModuleXX/xx.h>）或 module（@import ModuleXX），组件间在声明依赖后亦可直接引用头文件或 module ，EasyBox 工具链会根据源码文件或配置进行 module 化和 Xcode Build setting 相关的处理。

对于混编组件的二进制打包，开发者们也不用去关心如何处理编译产物，诸如 `*-Swift.h`、二进制架构、`*.swiftmodule`、`*.interface` 等，EasyBox 工具链打包命令 box package 会全权处理，降低开发者们的配置难度和协同成本。

### 🐎 [2020 年文章总汇](https://mp.weixin.qq.com/s/71z6vbkxjzk8SzJCmZeFlw)

[@J_Knight_](https://github.com/knightsj)：本文是一瓜技术公众号在2020年的文章汇总，同时也介绍了其他原创作者的信息以及分享的专题文章列表。而且在文章底部有一个关于读者喜爱的专题的投票，感兴趣的读者可以参与一下。

### 🐎 [使用 Swift 编写 CLI 工具的入门教程](https://mp.weixin.qq.com/s/V4IdsYUouKGr68ULyb88Qw)

[@Damien](https://github.com/ZengyiMa)：Swift 的推出提高了 iOS 的开发效率和体验，本文会介绍 Swift 在编写 CLI(command line tool) 方面的用途，文章会详细介绍开发 CLI 的方方面面，如 SPM 搭建开发框架、参数解析、单测的编写、工具安装等等。希望通过本文，读者们可以将 Swift 应用到更多方面。 

### 🐕 [图解 Mach-O 中的 got](https://www.jianshu.com/p/55d82172a9f8)

[@Leo](https://github.com/leomobiledeveloper)：本文介绍了什么是 got、got 在 mach-o 中的位置、函数符号如何与 dyld_stub_binder 进行关联，以及如何一步步查找动态库符号的值。图文并茂，可让读者了解动态库符号的绑定原理。

> 推荐人：[silan-liu](https://github.com/silan-liu)

### 🐕 [Thresh 今天正式开源，有望成为替代 RN 的一种长期方案](https://mp.weixin.qq.com/s/E2lhodazRZRVPUGafY92xA)

[@Parsifal](https://github.com/ParsifalC)：有点标题党的意思，不过文章还是值得一看。[Thresh](https://github.com/ymm-tech/thresh) 其实只是本篇文章的一部分，整篇文章内容围绕在「满帮团队在大前端效率提升实践的诸多尝试」上，包括基于 RN 封装的 MBRN，基于 Flutter 渲染的 Thresh 框架，本地 H5 方案，Android 端插件化方案，基于自定义 DSL 的搭建化框架 DaVinci，随着业务场景的多样化和业务需求迭代的高频性，这些方案可能是各个技术团队都会去摸索的。其中，Thresh 是利用 JSC + Flutter Engine 完成的动态化能力，这样也算曲线弥补了 Flutter 关闭 AOT 下的动态能力缺陷，而 Flutter 独立的渲染引擎也保持了多平台一致性的优势。至于值不值得，个人觉得还是见仁见智，结合团队实际情况来看。

## 工具

### [Downloader-for-Apple-Developers](https://github.com/vineetchoudhary/Downloader-for-Apple-Developers)

现在 Xcode 已经达到 10+ GB ，这个软件利用 aria2 可以多线程下载高速 Xcode，对于经常下载 Xcode 失败的同学可以试试~

> 由 [iHTCboy](https://github.com/iHTCboy) 推荐

### [DevUtils-app](https://github.com/DevUtilsApp/DevUtils-app)

[@Parsifal](https://github.com/ParsifalC)：由 Swift 编写的一个聚合了许多开发过程中会用到的小工具的 Mac App，比如各种编码解码、JSON 格式化、时间戳转换等等。

## 赞助者

虚位以待..

**非常感谢以上赞助者的支持，如果你也有赞助我们的兴趣，欢迎添加微信 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）
