# 老司机 iOS 周报 #185 | 2021-12-13

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

## 新闻

### [千钧一发之际赢得暂缓令，苹果 App Store 要反败为胜了？](https://www.36kr.com/p/1519790525222278)

[@Parsifal](https://github.com/ParsifalC)：Epic Games 与苹果之间的诉讼仍然在博弈中，9 月份法院宣判苹果败诉后，苹果也已经宣布会在 12 月 9 日前发布正式政策允许使用第三方支付。而就在限期到达前，苹果又向法院申请到了暂缓执行这一命令，并已经继续提起上诉。

## 文章

### 🐎 [如何构建异步渲染聊天框架](https://mp.weixin.qq.com/s/CAoTWjjnPBzALPBDZaU54g)

[@JimQ](https://github.com/waz0820)：本文前半部分侧重于“异步渲染”，概述了异步渲染的必要性，以及使用传统方案 TextKit 异步渲染的优缺点，针对其劣势引入了 Texture。后半部分侧重于“如何构建聊天框架”，基于 IM 输入框的实践，通过代码集中诠释了如何利用状态机和状态驱动来驱动 UI 的变化，从而降低用户使用框架的门槛。

### 🐎 [Support customers with StoreKit 2 and App Store Server API](https://developer.apple.com/videos/play/tech-talks/10887/)

[@ChengzhiHuang](https://github.com/ChengzhiHuang)：苹果官方宣传 StoreKit 2 ，[中文](https://developer.apple.com/events/tech-talks/dashboard/7DH6V3D8RM/dashboard)的直播将在 12 月 15 日举行，感兴趣的同学可以预约。本次 Tech Talk 并没有新的 API 或者新特性出现，主要是重复介绍 StoreKit 2 的新特性，详细展开了：正常支付、用户续订用户、处理退款，三个场景的最佳实践。

想了解 StoreKit 2 的细节，可以查看三篇 WWDC21 的翻译。  
[【WWDC21 10175】IAP 用户退款与客诉处理优化](https://xiaozhuanlan.com/topic/8670251439)  
[【WWDC21 10174】 IAP 后台通信优化与实践](https://xiaozhuanlan.com/topic/3768514920)  
[【WWDC21 10114】 初见 StoreKit 2](https://xiaozhuanlan.com/topic/6138790425)


### 🐕 [淘特 Flutter 流式场景的深度优化](https://mp.weixin.qq.com/s/H2VqX6qSJ1KLkXB5p4S0dw)

[@邦Ben](https://weibo.com/linwenbang)：本文从底层原理，思路到最终实现，进行递进的讲解，Flutter 表现一直以来是堪比原生，但是终归有些场景还是原生占优，列表场景则是最为常用的场景了，本文主要的优化点是局部刷新。如果有需要对 Flutter 列表进行优化的，可以参考一下。

参考链接：
- [他把闲鱼APP长列表流畅度翻了倍（良心教程）](https://mp.weixin.qq.com/s?__biz=MzU4MDUxOTI5NA==&mid=2247486101&idx=1&sn=171d269a324748f01e5c92fbaa54854f&chksm=fd54de84ca2357920b822902ea8b23137d83e2f4f7340fabae819182cba2585181be5455e5b2&scene=21#wechat_redirect)
- [ListView流畅度翻倍！！Flutter卡顿分析和通用优化方案](https://juejin.cn/post/6940134891606507534)


### 🐕 [iOS Pod Update 指数级变慢？看 Flutter 新一代版本仲裁算法 Pubgrub 如何解](https://mp.weixin.qq.com/s/Ulz9FafWwtbefVuikTMj7Q)

[@红纸](https://github.com/nianran)：本文介绍了 CocoaPods 在出现包版本冲突情况下，Molinillo 仲裁算法使用回溯 DFS 父节点的方式解决冲突问题。但在大型工程下，依赖图异常复杂，回溯成本较高，会出现严重的降速问题。一般都会在 Podfile 中声明好具体依赖来减轻仲裁负担。本文还介绍新一代的仲裁算法 Pubgrub 推导不兼容性算法的数学逻辑来解决依赖仲裁问题。感兴趣的同学可以看一看~

关于 Molinillo 的详细介绍可以看这篇文章： [Molinillo 依赖校验](https://mp.weixin.qq.com/s/Kux4B4piqR43RLwiHRcHUQ)。

> 自荐：[BlackTea](https://juejin.cn/user/4406498332782141)

### 🐕 [My worst tech interview experience · Jesse Squires](https://www.jessesquires.com/blog/2021/12/01/my-worst-tech-interview-experience/)

[@Barney](https://github.com/BarneyZhaoooo)：本文介绍了作者早期去面试 Apple Watch 团队的不愉快体验，结合后来的成长经历，表达了自己对如何面试的一些思考。

### 🐢 [浅谈 swiftinterface 文件](https://mp.weixin.qq.com/s/LVxFTp4nLHZDU_PqdsnX6Q)

[@anotheren](https://github.com/anotheren)：swiftinterface 是什么？文章以 **模块稳定性(Module Stability)** 为切入点，介绍了 .swiftinterface 文件的工作原理以及常见的误区，最后介绍了 `@_alwaysEmitIntoClient` 关键字以及它的实现原理。干货满满，还有不少作者的思考结论，推荐阅读。

### [Get started with in-app events](https://developer.apple.com/videos/play/tech-talks/10889/)

[@享耳先森](https://github.com/iblacksun)：从 Apple 在 WWDC 21 提起 In-app events 开始，到前段时间正式开放已经有一段时间了，建议回顾下本视频，包含了 in-app events 的一些建议和最佳实践。

### [Flutter 2.8 release 发布，快来看看新特性吧](https://mp.weixin.qq.com/s/7J_eLYO1DiPu8A2XsF99nw)

[@Parsifal](https://github.com/ParsifalC)：Flutter 继续稳步更新，2.8 版本正式发布。本次更新依然围绕着稳定性和性能方面。包含以下几点：

- 改进了应用的启动延迟问题，尤其是 Android 低端设备上
- 继续优化内存占用
- Android systrace 的支持
- Flutter DevTools 提高对性能调试的支持
- Web platform views 的优化
- WebView 3.0

## 摸鱼周报

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

* 话题：苹果正式开放 AppStore 的 2 个重磅功能：自定义产品页和产品页优化。
* Tips：设备启动流程的梳理。
* 面试模块：HTTP/1.0，HTTP/1.1，HTTP/2 有哪些区别？
* 优秀博客：几个音视频相关的优秀仓库介绍。
* 学习资料：计算机教育中缺失的一课（中文版）。
* 开发工具：myyearwithgit，开启你的年度报告。

## 音视频

### 🚧 🐢 [Scale By The Bay 2021 : Konrad Malawski, Distributed Systems with Swift](https://www.youtube.com/watch?v=7yu6mEq8R2Q&ab_channel=FunctionalTV)

[@老驴](https://weibo.com/u/6090610445)：Swift 在最近几年添加了很多新的语言特性，极力试图突破 Apple 生态圈。这个视频就是 Apple Swift 团队的工程师来介绍如何使用 Swift 中新添加的特性如 distributed actor 来写大型分布式系统。不过还是要温馨提醒一下有兴趣的同学，分布式系统不是单单一个语言的问题，所以不妨自己尝试尝试以后再在生产环境中使用。

## 赞助者

虚位以待..

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