# 老司机 iOS 周报 #182 | 2021-11-22

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

## 新闻

### 🌟 [Tech Talks 2021 - 中文专场](https://developer.apple.com/cn/tech-talks/)

[@Parsifal](https://github.com/ParsifalC)：新一批的 Apple Tech Talks 2021 中文专场来了，本次更新了 5 个专题，欢迎大家扫码报名~

- [为 ProMotion 屏幕进行优化（普通话）](https://developer.apple.com/events/tech-talks/dashboard/6SJQVA7UR3/dashboard)
- [核心设计原则（普通话）](https://developer.apple.com/events/tech-talks/dashboard/BPMX7VDZB3/dashboard)
- [提升游戏手柄的支持（普通话）](https://developer.apple.com/events/tech-talks/dashboard/3Y7S665W96/dashboard)
- [充分利用 App Review 流程（普通话）](https://developer.apple.com/events/tech-talks/dashboard/SF7CY9GMFR/dashboard)
- [在您的app中为 Center Stage 和 Video Effects 添加控制 （普通话）](https://developer.apple.com/events/tech-talks/dashboard/U3JA83J3D3/dashboard)

![image](https://user-images.githubusercontent.com/7930911/142759509-636fc4c9-0707-436a-8780-401510e71a16.png)

### [Apple 宣布将推出自助维修计划](https://www.apple.com.cn/newsroom/2021/11/apple-announces-self-service-repair/)

[@Parsifal](https://github.com/ParsifalC)：未来我们可以直接从官方购买零件和工具进行自己维修设备啦！苹果近期宣布将推出自助维修计划，首先将会在明年初于美国率先试运行，而后逐步推广至其他国家。这对于平常喜欢自己动手拆机而又不想从网上到处找靠谱零件的朋友无疑是一个福音，如果未来推出的零件价格合适，相信很多朋友都会尝试自助维修了~

### [新版 Flutter 中文开发者网站发布](https://mp.weixin.qq.com/s/JOm2-TBh4m3nJZKWbfjoug)

[@Parsifal](https://github.com/ParsifalC)：2021 年 Google 开发者大会 (Google Developer Summit) 于近日顺利举办，包含众多最新 Google 技术产品更新的线上演讲，干货满满。大会上发布了新版 Flutter 中文开发者网站和 DartPad。

## 新手推荐

### 🐎 [Swift Playgrounds App Projects](https://skyaaron.com/posts/swiftpm-app-projects/)

[@老峰](https://https://github.com/gesantung)：Swift Playgrounds 是由苹果公司在 2016 年 6 月 14 日苹果全球开发者大会 WWDC 上发布的 Swift 编程语言学习 App。上周 Apple 发布了 Xcode 13.2 Beta1 带来了 Swift Playgrounds 4，它提供了新的 *.swiftpm 格式可以与 Xcode 兼容；支持 UIKit 的完整 API，支持 Swift Package Manager，支持 Objective-C、C 和 C++，对 Swift Playgrounds 4 感兴趣的新手朋友推荐尝试。

## 文章

### 🌟 🐢 [从野指针探测到对iOS 15 bind 的探索](https://mp.weixin.qq.com/s/jNiRinGYeV3LiF5Zjt-x0w)

[@J_Knight_](https://github.com/knightsj)：本文从野指针的探测这一问题展开，介绍了 bind 流程的机制，以及它在 iOS 15下的改动。同时也介绍了 fishhook 的工作流程以及其他 2种 hook C 函数的方案，同时也讲解了 LC_DYLD_INFO_ONLY 以及 LC_DYLD_CHAINED_FIXUPS 的机制。

### 🌟 🐕 [美团外卖终端容器无关化研发框架](https://tech.meituan.com/2021/11/11/meituan-waimai-containerless-framework.html)

[@JonyFang](https://github.com/JonyFang)：美团外卖研发了一款终端容器无关化框架 - React2X，与服务无关化（Serverless）的概念类似，即在保持顶层业务研发语言不变更的情况下，在下层可以兼容性地升级、替换终端容器的能力，让用户无需关心终端容器的运维，只要将精力聚焦到业务逻辑上。React2X 解决了业务需求在多端容器需要重复开发的难题，通过代码复用实现开发提效，实现了几个目标：

- 解决公司内部多终端容器开发痛点，统一开发规范，抹平开发差异，并提供对其他容器的扩展能力；
- 建设跨容器动态化能力，可以解决美团外卖业务客户端发版限制和小程序包大小限制的问题，帮助业务实现快速发版上线以及线上问题热修复的能力；
- 建设容器无关的开发生态体系，解决的容器差异性，统一的技术生态能力建设，为多终端容器开发场景提升生产和运维效率。

### 🐎 [分享我成为 GDE（Google 开发者专家）的经历](https://mp.weixin.qq.com/s/14TpW7-EqZ_6XO1vYRnhiQ)

[@老驴](https://weibo.com/u/6090610445)：Google 开发者专家是 Google 给积极推广 Google 技术的开发者和布道者颁发的认证。最近几年因为有国内开发者积极参与推广，所以得到了越来越多人的关注。本文的作者 AlexV525 就在最近获得了 Flutter GDE 的认证。 Alex 分享了自己从申请到面试的全过程。有兴趣想拓展自己在开发者圈影响力的同学们也可以试试 GDE。

### 🐎 [Flutter 多插件本地化问题](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247486934&idx=1&sn=b1f809e93ffcf0ab051b0862c1f8eb03&chksm=cf55821ef8220b085333ffc8622f17cdec599bf53c0b95cfe1a50f901b85d778316a1feb7e39&token=290590453&lang=zh_CN#rd)

[@ChengzhiHuang](https://github.com/ChengzhiHuang)：作者在多插件开发的过程中，发现使用 Flutter intl 插件来自动生成本地化代码后，最终展示的文案不符合预期。在研究源码后发现是共用了一个 messageLookup 对象导致，并提供了能自动化解决的[脚本](https://github.com/silan-liu/flutter_app_localization/blob/main/scripts/intl.rb)，有同样需要本地化开发的同学可以借鉴。

> 由本文作者 [summer-liu](https://https://github.com/silan-liu) 推荐收录。

### 🐕 [Introducing XCRemoteCache: The iOS Remote Caching Tool that Cut Our Clean Build Times by 70% : Spotify Engineering](https://engineering.atspotify.com/2021/11/16/introducing-xcremotecache-the-ios-remote-caching-tool-that-cut-our-clean-build-times-by-70/)

[@Barney](https://github.com/BarneyZhaoooo)：本文介绍了 Spotify 的 **XCRemoteCache** 实践，如标题所说，效果显著。

- 背景
- 原理分析
- 如何在工程中集成  XCRemoteCache

### 🐎 [How to use Github Copilot with Swift using Visual Studio Code?](https://antran.app/2021/github_copilot_swift/)

[@Smallfly](https://github.com/iostalks)：[Github Copilot](https://copilot.github.com/) 是一款人工智能编程伴侣，它能根据输入的上下文代码或注释，「智能化」地生成代码段，支持主流的一些编辑器，但不支持 Xcode。

本文介绍了如何在 Visual Studio Code 中支持使用 Github Copilot 生成 Swift 代码的流程。

## 摸鱼周报

[@摸鱼周报 #34](https://mp.weixin.qq.com/s/P0HjLDCIM3T-hAgQFjO1mg)：第三十四期摸鱼周报来啦，一起来看下本期概要：

* 话题：Apple 宣布推出自助维修计划。
* Tips：混编｜NS_SWIFT_NAME。
* 面试模块：二叉树的三序遍历。
* 优秀博客：几个 Swift 三方库的解析文章。
* 学习资料：棒棒彬·技术参考周刊。
* 开发工具：Mounty：一个在 macOS 下以读写模式重新挂载写保护的 NTFS 卷的免费的小工具。

本期摸鱼周报的访谈系列邀请的是一位参加过 WWDC 的同学，因为是 17 年，还是线下，所以有很多有趣好玩的事情。看完全内容可以点击这里：[人物访谈 | 一位参加过 WWDC 的 iOSer](https://mp.weixin.qq.com/s/5Z8n2bFPbZlG3R0MgqdGDQ)

## 工具

### [SwagGen](https://github.com/yonaskolb/SwagGen)

[@AidenRao](https://weibo.com/AidenRao)：SwagGen 是一个库和命令行工具，用于解析和生成 OpenAPI/Swagger 3.0 规范的代码，完全用 Swift 编写。

[OpenAPI 规范](https://github.com/fishead/OpenAPI-Specification/blob/master/versions/3.0.0.zhCN.md)（OAS），是定义一个标准的、与具体编程语言无关的 RESTful API 的规范。OpenAPI 规范使得人类和计算机都能在“不接触任何程序源代码和文档、不监控网络通信”的情况下理解一个服务的作用。如果您在定义您的 API 时做的很好，那么使用 API 的人就能非常轻松地理解您提供的 API 并与之交互了。

如果您遵循 OpenAPI 规范来定义您的 API，那么您就可以用文档生成工具来展示您的 API，用代码生成工具来自动生成各种编程语言的服务器端和客户端的代码，用自动测试工具进行测试等等。

## 代码

### 🌟 [SwiftTreeSitter](https://github.com/ChimeHQ/SwiftTreeSitter)

[@四娘](https://kemchenj.github.io)：语法高亮的实现一直困扰着 GitHub/Atom 的工程师，网页和编辑器并不像 IDE 那样，它们没有完整的上下文，它们不了解每个单词背后代表着的是变量还是函数。

除此之外，性能也是一个问题，传统的多次正则匹配会让性能变得很差，而且不支持增量解析，这意味着每次敲下一个字编辑器都需要重新完整地解析一次，这对于大文件来说尤其致命。

TreeSitter 就是为了在这个场景下更好地进行词法分析的一个解析器，输入文件就可以输出 AST，它真正地实现了词法解析，支持增量解析，支持多语法的解析，例如 html 里的 javascript 和 css 也可以被正确解析，目前 GitHub 已经在线上启用了很长一段时间。

这个项目是 TreeSitter 的 Swift Binding，让我们可以使用 Swift 去调用 TreeSitter 的相关功能。另外，对于 Tree-sitter 感兴趣的同学也可以看一下[他们的工程师在某个技术大会上的演讲介绍](https://www.youtube.com/watch?v=Jes3bD6P0To)。

## 赞助者

虚位以待..

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