# 老司机 iOS 周报 #235 | 2023-03-06

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

## 新闻

### [T 沙龙新官网（www.tsalon.tech）上线啦，欢迎大家关注！](https://www.tsalon.tech/)

[@EyreFree](https://github.com/EyreFree): T沙龙，全称为 T 技术沙龙，是一个以促进开发者之间技术交流为目的的技术沙龙组织，成立后一直在定期举办各种面向开发者的线上 & 线下沙龙活动。从 2016 年 3 月份开始，在北京、上海、成都、杭州和深圳等地相继举办了 30 多场线下沙龙活动，同时也举办了多场线上活动。本次 T 沙龙官网更新，感兴趣的朋友可以关注，获取第一手活动资讯，🎉

## 文章

### 🌟 🐕 [淘宝 APP 网络架构演进与弱网破障实践](https://mp.weixin.qq.com/s/YomDksoRv_Chuw7oHBzzFA)

[@JonyFang](https://github.com/jonyfang): 本文主要介绍手淘终端统一网络库 AWCN (Ali Wireless Connection Network) 演进的过程。讲述如何围绕体验持续构建南北向从监测到加速一体化的终端网络架构，通过构建 NPM 弱网诊断感知能力，落地原生多通道技术/多协议择优调度手段，贴合厂商附能网络请求加速，实现去 SPDY 及规模化 IPv6/H3 协议簇的平滑过渡，为用户提供弱网更好、好网更优的 APP 加载浏览体验，支撑业务创造更多的可能性。

文中针对网络库设计的理念及方案演进介绍的比较全，思路可做参考学习。

### 🐕 [QQ音乐高可用架构体系](https://mp.weixin.qq.com/s/G00cwGYAr6l2Px6-DiwXLA)
[@莲叔](https://github.com/aaaron7): 这是一篇服务端视角的高可用架构的介绍文章。如何处理故障是几乎所有分布式系统的最关键的一环。文章分享了 QQ 音乐在面向故障处理的思考以及演进出的一套行之有效的技术体系，从架构、工具链和可观测性三个角度来实现了优雅的处理故障的能力。虽然是服务端视角偏多，但整体行文比较浅显易懂，相信客户端同学也能够有所收获，尤其是在当下很多技术都是端到端的，所以具备一定的服务端视角也能帮助我们更好的设计技术架构，定义技术体系。

### 🐕 [SwiftUI views versus modifiers](https://www.swiftbysundell.com/articles/swiftui-views-versus-modifiers/)
[@Damien](https://github.com/ZengyiMa): SwiftUI 最有趣的方面之一是从本质上将视图相关的描述也视为数据。SwiftUI 视图不只是在屏幕上呈现的像素，也是定义了给定的 UI 应该如何工作、外观和行为，本文就是会通过几个例子来描述 SwiftUI 视图与修饰符的使用和介绍，对 SwiftUI 感兴趣的同学不妨一读。

### 🐢 [正则表达式是如何运作的？](https://mp.weixin.qq.com/s/i_C4ATnajxRDGlTA8dJDHg)
[@zoeGuo](https://github.com/zoeGuo)：在日常的开发工作当中，我们必不可免的会碰到需要使用正则的情况。正则在很多时候通过不同的组合方式最后都可以达到既定的目标结果，而不同的撰写方式，匹配的效率也有很大的不同。文章从正则表达式与有限自动机（FA）开始，逐步深入描述：不确定有限自动机（NFA）及确定有限自动机（DFA）、正则如何替换成 NFA、NFA 转换成 DFA 及其简化；并解释了体现正则不确定性的“回溯”的相关概念。文章整体理论性很强，需要耐心好好阅读，相信认真阅读之后，会对正则表达式有一个更加具体，立体的认知。

### 🐕 [网易云音乐基于 C2D2C 的「无损」设计协同](https://mp.weixin.qq.com/s/ngQXWLhwV7wDyTMlr3QxmQ)

[@J_Knight_](https://github.com/knightsj)：本文首先介绍了传统设计协同（在设计师和开发的合作下，将产品需求转化成代码的过程）中存在的一些问题（比如沟通成本高，开发效率低等）。然后介绍了基于 C2D2C 的无损设计协同方案（C2D，全称是 Code2Design，也就是将代码转成设计稿；D2C，则是其逆过程，将设计稿转成代码）。并通过流程图以及设计和代码示例展现了其无损协同的几个优势：
- 首先，是维护成本低。因为只需在开发侧维护一套组件库即可。
- 其次，是协作效率比较高。因为设计细节无损保存在元数据中，免去了反复确认。
- 最后，是局部效率比较高。因为设计师可以利用 C2D 快速生成设计稿，开发者利用 D2C 快速还原 UI。

### 🐕 [Pattern matching on error codes – Ole Begemann](https://oleb.net/blog/2023/catch-error-code/)

[@Barney](https://github.com/BarneyZhaoooo)：本文简单介绍了一个 error 匹配的小技巧，正如文章开头如下所说。

- Foundation overloads the pattern matching operator ~= to enable matching against error codes in catch clauses. 

### 🐎 [What is the default target queue for a serial queue?](https://forums.swift.org/t/what-is-the-default-target-queue-for-a-serial-queue/18094)

[@xuyafei86](https://github.com/xiaofei86): GCD 通过目标队列来管理系统全局队列和各种自定义队列的任务调度。目标队列共享相同的线程池，受到线程池 64 条线程数量的限制。在这条 Swift 社区的提问中，作者思考了自定义串行队列是否遵循这种策略的问题。从 [GCD 源码](https://opensource.apple.com/source/libdispatch/libdispatch-1173.40.5/src/queue.c.auto.html) 中可以看到，苹果隐藏了 overcommit（过载）队列的概念，overcommit 队列创建线程时不受线程池线程数量的控制。系统全局队列是非 overcommit 的，而自定义串行队列是 overcommit 的。继续阅读原文了解关于此问题在应用层面的讨论。当我们手动设置目标队列和 Precondition 时，这也将有利于我们避免崩溃发生。

### 🐕 [Xcode Header Template for Swift Packages](https://samwize.com/2023/02/28/xcode-header-template-for-swift-packages/)
[@水水](https://www.xuyanlan.com)：如果您使用 Swift Packages 时，每当您创建一个新文件，可能会出现两个令人讨厌的问题：

- No header template ：头部信息中缺少一些包名和组织名称等
- No prompt for filename：没有文件名命名提示

本文针对这两个问题提出了解决方案，感兴趣的读者可以尝试看看~

## 代码

### 🐎 [ChatGPT App](https://github.com/chenxi92/ChatGPT)

[@Cooper Chen](https://github.com/cjlcooper)：目前 ChatGPT 持续火热，这是一套由 SwiftUI 开发并且可以与 OpenAI Api 交互的 Mac App 和 iOS App 代码，为想要了解和学习 ChatGPT 的同学提供了一个快速便捷的入口，同时使用方法也十分简单：
- Mac App：在 Release 页面下载 ChatGPT.dmg 文件即可
- iOS App：下载源码，然后使用自己的打包证书即可

## 摸鱼周报

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

* 本期话题：在线讲座：与 App Store 专家会面交流；加速器线上活动：设计挑战（亚太）
* 内容推荐：本期将推荐近期的一些优秀博文，涵盖基于文本生成图像、SwiftUI 布局、Swift 静态代码检测、原生的 SwiftUI Markdown 渲染包等方面的内容
* 摸一下鱼：ChatGPT 的 API 开发使用；Notion AI 体验；new bing 体验；针对程序员的智能搜索引擎 phind

## 内推

重新开始更新「iOS 靠谱内推专题」，整理了最近明确在招人的岗位，供大家参考

具体信息请移步：https://www.yuque.com/iosalliance/article/bhutav 进行查看（如有招聘需求请联系 iTDriverr）

## 关注我们

我们是「老司机技术周报」，一个持续追求精品 iOS 内容的技术公众号，欢迎关注。

**关注有礼，关注【老司机技术周报】，回复「2021」，领取 2017/2018/2019/2020 内参**

![](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）
