# 老司机 iOS 周报 #186 | 2021-12-20

![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 15.2 新增相册卡死

[@ChengzhiHuang](https://github.com/ChengzhiHuang)：12 月 15 日，苹果发布了 iOS 15.2 的正式版。不幸的是这次升级带来了卡死。在还未向用户申请相册权限时，即 ``[PHPhotoLibrary authorizationStatus] != PHAuthorizationStatusAuthorized``  时，如果调用 ``[[PHPhotoLibrary sharedPhotoLibrary] registerChangeObserver:xxx];`` 添加监听，则会卡死。苹果开发者论坛也有同学[反馈](https://developer.apple.com/forums/thread/696131)，目前苹果还未有回应，可以看到这个问题在 15.2 beta 版中就存在了，需观察苹果后续会如何处理。

临时方案可以在注册前进行判断，如果没有权限，则不注册观察者。

## 文章

### 🌟 🐕 [浅谈 Swift Dictionary](https://mp.weixin.qq.com/s/yIHaAaGRX7Ru_OetdX0_Vg)

[@ChengzhiHuang](https://github.com/ChengzhiHuang)：作者分析字典下标访问方法，并将源码与汇编结合，便于读者加深理解，推荐一读。阅读需要对汇编有些基础了解，例如[保留字 qword、byte 等](http://c.biancheng.net/view/3465.html)。

同时本文还包含了：
- 字典的内存布局，主要关注 count、scale、rawKeys/Values 这些固定布局结构，和 bitset、Keys/Values 这些不固定布局的结构。
- 简单介绍动态调试 Swift 源码的方案。

### 🌟 🐕 [FlutterWeb 性能优化探索与实践](https://mp.weixin.qq.com/s/fE11vs2qnRIHAWYv1af-gA)

[@Damien](https://github.com/ZengyiMa)：2021 年 3 月份，Flutter 2.0 正式对外发布，意味着 Google 更加坚定了多端复用的决心。本文是美团外卖商家团队基于 HTML Render 模式对 FlutterWeb 性能优化进行了探索和实践，主要包括：
- SDK（Dart-SDK、Framework、Flutter_Web_SDK）的精简
- 静态资源产物优化（例如：JS 分片、文件 Hash、字体图标文件精简、分平台打包等）
- 前端资源加载优化（预加载与按需请求）

使得 JS 产物由 1.2M 减少至 0.7M（非业务代码），页面完全加载时间 TP90 线由 6s 降到了 3s 的不错成绩，并且提出更加长期规划，对 FlutterWeb 感兴趣的同学不妨一读。

### 🐢 [不甘当学渣，努力作学霸，最终是学民](https://mp.weixin.qq.com/s/lZzX_1pLeied7e4jkvcVJQ)

[@Smallfly](https://github.com/iostalks)：本文记录了一名「普通」程序员在近两年工作，学习，旅行上不平凡的经历。 

### 🐕 [从 350ms 到 80ms，打造新零售场景下 iOS 短视频的极致丝滑体验](https://mp.weixin.qq.com/s/qYsfyw2K77hKMfHd_uTp-Q)

[@anotheren](https://github.com/anotheren)：来自盒马的短视频优化方案，其核心方案依然是 3 点：提前缓存视频数据、视频文件编码/体积优化、提前准备播放器。

## 摸鱼周报

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

* 话题： Xcode 13.2 和 iOS 15.2 的正式版值得关注的几项新功能。
* Tips：内存相关的一些机制。
* 面试模块：dealloc 在哪个线程执行；NSString *str = @"123" 这里的 str 和  "123" 分别存储在哪个区域。
* 优秀博客：SwiftUI 相关的几篇优秀博客。
* 学习资料：软件随想录，Joel Spolsky 的 Blog 纸质版文集。
* 开发工具：Dropshelf，一款 Mac OS 下的拖拽效率应用。

本期人物访谈邀请的是_夏天_，他是摸鱼周报的一位主编，主要负责 Tips 部分的编写和审核。曾参与掘金翻译计划，翻译过很多篇优质博客内容，也翻译过像是 iOS Crash Dump Analysis Book 这一类的外文图书。这次拉他来聊一聊关于外文翻译和他个人的一些工作感悟，完整内容可以点击查看：[人物访谈 | 一位普通的 iOS 程序员](https://mp.weixin.qq.com/s/60o6UKcDjf9lAy2o2AQ_tw)。

## 工具

### [Zealot](https://github.com/tryzealot/zealot/)

[@JonyFang](https://github.com/JonyFang)：推荐一个开源自部署 iOS、Android 及 macOS 应用分发平台，提供 iOS、Android SDK、fastlane 等丰富组件库，打包分发流程、简化了应用上传、可独立部署，是对开发者、测试者友好的开源项目。

## 代码

### [AppFlowy](https://github.com/AppFlowy-IO/appflowy)

[@AidenRao](https://weibo.com/AidenRao)：[Notion](https://www.notion.so/) 是深受团队和个人欢迎的生产力应用。AppFlowy 是 Notion 的开源替代品，支持主流的移动和桌面端系统，技术选型很有趣，前端选择了 Flutter，后端使用 Rust 编写，通过 FFI 进行通信。

## 音视频

### [佛系技术翻译组 SwiftGG 的过去与现在](https://www.xiaoyuzhoufm.com/episode/61b451ff0506e510b35d71d0?s=eyJ1IjogIjVlN2M4NjIxYjNjNWJjYTVmNjQxMzlmMiJ9)

[@Parsifal](https://github.com/ParsifalC)：老卓的播客这次邀请到了 SwiftGG 的两代负责人 梁杰 和 MM 一起谈谈社区组织 SwiftGG 的往事。SwiftGG 翻译组一直负责着 Swift 官方文档的翻译工作，并得到了官方的认可，还曾举办了国内的 Swift 大会和上海 T 沙龙活动。老卓也是老司机技术周报的创始人，并且周报编辑组也有多位成员参与了 SwiftGG。3 个人在这期播客里，聊到了很多做社区组织背后的小故事，分享了这些年来的经验和体会。

### [Explore and manipulate data in Swift with TabularData](https://developer.apple.com/videos/play/tech-talks/10100/)

[@xiaofei86](https://github.com/xiaofei86)：本期 Tech Talks 带了新的框架 TabularData，用来导入、组织和准备数据表以训练机器学习模型。除了为机器学习任务预处理数据外，你也可以将加载、浏览和操作 CSV、JSON 等非结构化数据的能力用在 App 中。

观看视频了解此框架如何帮助你处理大型数据集，并将多个数据表连接在一起进行过滤。视频还将向你展示如何使用 DataFrame 来驱动 App 的所有以数据为中心的功能。

## 赞助者

虚位以待..

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