# 老司机 iOS 周报 #175 | 2021-09-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) 提出。

## 新闻

### [有消息了，找你的。](https://mp.weixin.qq.com/s/FPml7P1RHTc0QBbFb3TKbg)

[@Parsifal](https://github.com/ParsifalC)：苹果今年的秋季发布会正式官宣将在北京时间 9 月 15 日凌晨 1 点举行，iPhone 13 和 iPad 9 等主要硬件设备有望悉数登场，另外近年来一直传言的 AR & VR 领域也值得期待是否会在这次有所透露~

## 新手推荐

### 🐕 [灵动的适配器模式 | Flutter 设计模式](https://mp.weixin.qq.com/s/w0msBQnDzkZ4rsL1EtPyVA)

[@邦Ben](https://weibo.com/linwenbang)：本文以 Flutter 的角度来说明了 Adapter 模式的用法，如果是 Android 的同学会对这个模式更为熟悉。文中给出了具体的例子，感兴趣的同学可以一看。

## 文章

### 🌟 🐕 [iOS 端容器之 WKWebView 那些事](https://mp.weixin.qq.com/s/39u-48KvO-Fmkn9t0nJ-fA)

[@JonyFang](https://github.com/JonyFang)：本文主要总结了阿里在端容器设计开发过程中，WKWebView 使用上遇到的一些经典问题和对应的解决办法，能够为受此类问题困扰的同学提供一些帮助。

主要细述了 3 件事情：
- WKWebView 使用中的典型问题有哪些？
- 为什么会出现这些问题？
- 这些问题的解决办法有哪些？

### 🌟 🐕 [iOS 崩溃日志在线符号化实践](https://mp.weixin.qq.com/s/MIun-eV4_J1hXGDRjGoLaw)

[@Barney](https://github.com/BarneyZhaoooo)：由百度 App 技术出品的崩溃符号化实践，从什么是符号化等最基础的概念入手，深入浅出，详细描述了在线符号化落地的全过程。

- 什么是符号化
- 符号化原理
- 本地符号化
- 在线符号化
- 效果和收益

### 🐢 [iOS 符号解析重构之路](https://mp.weixin.qq.com/s/TVRYXhiOXIsMmXZo9GmEVA)

[@水水](https://www.xuyanlan.com)：本文介绍了几种单机解析工具的简单使用，并详细的介绍了字节跳动终端技术的在线符号解析服务的历史方案探索路程，结合最终方案深入的介绍了符号解析原理相关知识。
读者能够通过此文深入的了解符号解析的原理，也能为正在搭建符号解析平台的读者提供参考。

> WWDC 21 内参中的 [iOS 符号化：基础与进阶](https://mp.weixin.qq.com/s?__biz=MzI2NTAxMzg2MA==&mid=2247491945&idx=1&sn=0d320492230940db88e34887dee96b76&chksm=eaa17e62ddd6f7747acf2fa6d86a9cf4aaf8e0ba6fd18a9d374b1ffcfbc1ca2e1a65c2cf9cc5&token=1941754559&lang=zh_CN#rd) 一文也值得大家学习。

### 🐕 [再探ARC，Autoreleasepool，NSString— —由一场直播 OOM 引发的故事](https://mp.weixin.qq.com/s/oU9DWR4OP8DMp6smMhIxZg)

我们在日常的开发中，可能不会过多的关注内存的问题，因为 ARC 通常可以帮我们避免 99% 的内存泄漏问题，但是，ARC 毕竟不是万能的，对于剩下的 1% 内存问题，却可能造成很大的影响。快手最近就遇到了一个由 NSString 引发 的OOM 问题，本文详细回顾了问题的原因以及如果定位和解决的。

### 🐕 [在 SwiftUI 中使用 UIKit 视图](https://mp.weixin.qq.com/s/QEDd9cIHi3lk0O63fc-ApQ)

[@zvving](https://github.com/zvving)：SwiftUI 组件与细节功能日益完善，而实际项目中，但仍有大量的事情需要基于 UIKit 实现。如何封装 UIKit 组件，使其可以在 SwiftUI 中应用，怎样提供 SwiftUI 风格的调用方式，选择不同方案时又要注意哪些问题？本文从二者生命周期的不同出发，再通过实际代码带你了解 SwiftUI 使用 UIKit 的具体过程。

> 来自作者自荐：[@东坡肘子](https://www.fatbobman.com/)

### 🐕 [一个 JavaScriptCore 框架中对象与 Timer 引发的死锁问题内幕](https://mp.weixin.qq.com/s/ywYj886iVoU3OvcV4pAC6g)

[@Smallfly](https://github.com/iostalks)：本文来自快手大前端团队，介绍了一个 Main Thread 与 JSC Heap Collector Thread 互相等待发生的死锁问题，并分享了相应的解决方案。其中详细的描述分析、验证、解决问题的过程，有不错的参考价值。

### 🐕 [Preventing Data Races Using Actors in Swift](https://swiftsenpai.com/swift/actor-prevent-data-race/)

[@享耳先森](https://github.com/iblacksun)：数据竞争一直是并行编程下的难点，其往往难以检测与解决。本文先介绍了数据竞争的的基础，再介绍 Swift 5.5 引入的 Actor 如何优雅的解决这个问题。

### 🐢 [Flutter 多引擎支持 PlatformView 以及线程合并解决方案](https://mp.weixin.qq.com/s/6aW9vbithMWTOJ_PGniQTA)

[@ChengzhiHuang](https://github.com/ChengzhiHuang)：在多引擎使用 Flutter 时，会遇到一些问题，本文详述了使用 PlatformView 时遇到的问题。解决了 ``普通多引擎``与``轻量化多引擎`` 情况下 Platform Task Runner 与 GPU Task Runner (Raster Task Runner) 合并的问题，并以 PR 的方式合入了 Flutter 主分支。其中对源码的讲解十分有价值，有助于大家理解 engine 层的四大 Task Runner 是如何工作的。  
同时本文还介绍了给 Flutter 提 PR 时的一些步骤与经验。

### 🐎 [ARC 下还有 __NSStackBlock__ 吗](https://dengweijun.com/arc-nsstackblock-31c0c1d493974db5bd7f278dd20e223a)

[@J_Knight_](https://github.com/knightsj)：在 ARC 下，block 在赋值给强引用时会被复制到堆上，成为 __NSMallocBlock__ 类型的 block。本文作者结合代码介绍了如何在 ARC 下生成 __NSStackBlock__ 类型的 block 的方法，以及相关的 llvm 相关的在这方面做的优化。

## 摸鱼周报

[@摸鱼周报 #26](https://mp.weixin.qq.com/s/PnUZLoyKr8i_smi0H-pQgQ)：第二十六期摸鱼周报来啦，一起来看下本期概要：

* 话题：跟熊大聊一下独立开发和音视频开发。
* Tips：对节流和防抖的再讨论；关于 TestFlight 外部测试的一些介绍。
* 面试模块：本期解析 KVO 的实现原理。
* 优秀博客：收录了一些 RxSwift 相关的文章。
* 学习资料：靛青早期写的 RxSwift 学习教程。
* 开发工具：公众号文章同步工具 Wechatsync。

## 代码

### [URLServiceRouter](https://github.com/lightank/URLServiceRouter)

[@EyreFree](https://github.com/EyreFree)：URLServiceRouter 是一个用 Swift 语言开发的基于 URL 的路由分发库，由一个高自由度的 nodeTree 和 RPC 来实现，可使开发者在 App 中很方便地实现诸如测试环境和生产环境切换之类的工作。

## 赞助者

### flomo 浮墨笔记

新一代卡片笔记，像聊天一样无压力输入，帮你积累知识的复利。还有极简的 API 可打通更多产品。老司机读者专属注册码（可以获得 45 天 PRO 会员）：https://flomoapp.com/register2/?Mjk4Njk

### 产品沉思录

一份由少楠& fonter 打理的付费邮件周刊及知识库，创建于 2017 年，累计 3000+ 用户付费订阅。涵盖了产品设计，服务设计，互联网技术，经济学，社会学等领域。我们尽量选择那些半衰期较长的内容，以确保这些知识能跨越时间。欢迎访问我们的免费精选集：https://index.pmthinking.com

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