# 老司机 iOS 周报 #270 | 2023-12-04

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/270.jpg?raw=true)
老司机 iOS 周报，只为你呈现有价值的信息。

你也可以为这个项目出一份力，如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们，我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。

## 新闻

### 即将迎来圣诞审核高峰，各位开发者调整好提交时间

苹果预告将在 12 月 22~27 日 迎来圣诞假期，期间审核会相对变慢，根据惯例加急也会照常开放，有期间发版需求的同学需要早做安排。根据往年经验在 20 日提审大概率可以在高峰来临前通过审核。

## 文章

### 🐕 [建立个人学习观｜地铁上的自习室](https://mp.weixin.qq.com/s/azyF-y5jPIy5trOpZFf0pA)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)： 本文旨在帮助初入职场或陷入迷茫的读者建立个人学习观，强调在日常生活中保持学习心态，在不同空间和阶段中收获额外的东西，让学习成为一种习惯，丰富自己的知识和人生。

### 🐎 [Missing Xcode run test buttons](https://paul-samuels.com/blog/2023/10/24/missing-xcode-run-test-buttons/)

[@Barney](https://github.com/BarneyZhaoooo)：Xcode 运行测试按钮缺失恢复的小技巧、复制测试类名到导航器面版的过滤器中然后在该面板中点击播放按钮。

### 🐎 [Apple’s use of AppKit, Catalyst, Swift and SwiftUI in macOS Sonoma](https://blog.timac.org/2023/1128-state-of-appkit-catalyst-swift-swiftui-mac/)

[@Smallfly](https://github.com/iostalks)：这篇文章对 macOS 的开发组件和语言的演变提供了深入洞察，涉及了二进制数量、编程语言选择以及 UI 框架采用等方面。Sonoma 总共有 7884 个二进制文件，其中 Objective-C 仍然是核心语言，Swift 使用率不断增加。

SwiftUI 在 Sonoma 中得到显著应用，文章还观察到 Swift 在安全区域处理器中的使用，展示了 Swift 在受限环境中的适用性。总体而言，Swift 和 SwiftUI 的采用不断增长，而 Mac Catalyst 则呈下降趋势，标志着这项技术已进入过渡期。

### 🐕 [Observable Architecture Beta!](https://www.pointfree.co/blog/posts/125-observable-architecture-beta)

[@zvving](https://github.com/zvving)：Swift 5.9 引入的 `@Observable` 标志着数据驱动 UI 方式的重大转变。随着这种变化，The Composable Architecture(TCA) 项目推出了重要的升级——集成 Observable 并向后兼容至 iOS 13 的新版本。目前，TCA 项目在 GitHub 上的关注已度突破了一万星标。

值得指出的是，TCA 是一种有较高学习和应用成本，但同时又提供大量示例和教程的重量级框架。如果你对 TCA 感兴趣，可以通过[TCA - SwiftUI 的救星？系列文章](https://onevcat.com/2021/12/tca-1/)、[聊一聊可组装框架（TCA）](https://fatbobman.com/posts/the_Composable_Architecture/)或阅读[官方教程](https://pointfreeco.github.io/swift-composable-architecture/main/tutorials/meetcomposablearchitecture/)来深入了解。

### 🐎 [《产生式元编程》第三章 替换蓝染概念纤悉](https://mp.weixin.qq.com/s/V5LRUPhSCagSI5W3lj9hbw)

[@J_Knight_](https://github.com/knightsj)：本文作者结合代码介绍了宏被替换的过程：如果是有参数的宏。会先替换参数；如果是无参数的，则直接扫描。系统会将扫描一直循环进行下去，而扫描停止的条件是触发了蓝染。蓝染的概念是：一次扫描中，若是替换的 token 引用了其自身，该 token 就会被标记为不可处理状态。这个标记动作就称为 Painted blue。然后作者讲解了蓝染的触发机制，以及剖析了 C 预处理器不支持递归的原因。

### 🐎 [初探 SwiftUI Link](https://kyleye.top/posts/explore-swiftui-link/)

[@kemchenj](https://kemchenj.github.io/)：本文从 `Link` 在 watchOS 上无法成功打开链接开始探究，先是逆向出 `Link` 的实现，接着是私有 API `_openSensitiveURL` 的调用，`OpenSensitiveURLActionKey` 的实现细节，最终将研究的内容汇总得到最合理的解决方案。

### 🐎 [iPhone 加入游戏，但 USB-C 的乱纪元还没有完结](https://sspai.com/post/84508)

[@老驴](https://weibo.com/u/6090610445)：来自少数派的一篇科普向的文章，主要是给大家梳理下 USB-C ，Thunderbolt 和传输协议之间的各种交错复杂的关系。不过，即便你没有能完全搞懂也没关系，因为大多数情况下不影响基本的充电，而更多的是影响数据传输速度。

## 工具

### [devv.ai](https://devv.ai/)

[@zoeGuo](https://github.com/zoeGuo)：[devv.ai](https://devv.ai/) 自称“最懂程序员的新一代 AI 搜索引擎”。你可以用它来搜索某个技术名词，可以获得比较完善的技术摘要，还有引用原文。可以在上一问题上追加提问，因为接入了搜索引擎的数据，回答结果也都比较新，程序员可以试试用它学习一些新的概念。

## 内推

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

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

## 关注我们

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

**关注有礼，关注【老司机技术周报】，回复「2023」，领取 2023 及往年内参**

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