# 老司机 iOS 周报 #314 | 2024-12-02

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

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

## 文章

### 🐎 [AutoConsis：UI 内容一致性智能检测](https://mp.weixin.qq.com/s/VwnnYnyo9sCDdUuG4Mu1kQ)

[@Damien](https://github.com/ZengyiMa)：这篇文章介绍了美团技术团队与复旦大学计算机学院合作开发的 AutoConsis 系统，这是一个自动化智能检测流程，用于检测移动 App 中 UI 界面内容的一致性。该系统通过目标区域识别、目标信息提取和一致性校验三个关键步骤，实现了低成本、高泛化性和高置信度的 UI 内容一致性检测。AutoConsis 在美团 App 的多类营销业务场景中得到应用，有效提升了 UI 质量保障，并在 ICSE 2024 会议上发表了相关论文。

### 🐎 [Lazy vars in @Observable classes in Swift](https://nilcoalescing.com/blog/LazyVarsInObservableClasses/)

[@zoeGuo](https://github.com/zoeGuo)：从 ObservableObject 协议迁移到 @Observable 宏时，如果之前使用 lazy 修饰了该类型的变量，那么迁移后将会遇到报错的情况。文中解释了这种情况并提出可以使用 @ObservationIgnored 来解决。

### 🐎 [Exploring Apple Intelligence: Writing Tools](https://www.createwithswift.com/exploring-apple-intelligence-writing-tools)

[@EyreFree](https://github.com/EyreFree)：本文介绍了 Apple Intelligence 新推出的 Writing Tools 写作工具功能。该功能集成于 Apple 生态系统中，可在 iOS 和 macOS 设备上使用，主要提供以下功能：

- 智能校对：自动识别并修正语法和拼写错误
- 文本重写：支持改写文本，可选择友好、专业或简洁的语气
- 文本转换：将文本转换为要点、列表或表格（测试版暂未提供）
- 文本摘要：生成长文本的简明摘要（测试版暂未提供）
- AI 集成：支持 AI 辅助写作（测试版暂未提供）

对开发者而言，Writing Tools 已自动集成到 SwiftUI 的 Text、TextField 和 TextEditor 等原生组件中。开发者可以通过 writingToolsBehavior 修饰符来自定义写作工具的行为，还可以在 UIKit 中实现更灵活的控制。这套工具已无缝集成到 Mail、Messages、Notes 和 Safari 等 Apple 生态系统应用中，显著提升了在这些应用中的写作体验。

### 🐕 [货拉拉 iOS 疑难 Crash 治理-系统键盘语音](https://juejin.cn/post/7396463744186515465)

[@xiaofei86](https://github.com/xiaofei86)：本文主要介绍了货拉拉解决系统键盘语音转文字崩溃的整个排查过程。通过崩溃类型、崩溃堆栈和偏移指令等信息，结合汇编指令调试，最终确定崩溃根本原因，并进行有效治理。感兴趣的同学可以阅读原文学习更多疑难崩溃的分析思路。

### 🐢 [Google Deepmind LLM 研究员解读 OpenAI o1 及 LLM+ 强化学习新范式 ｜ 3 小时播客全文精华](https://mp.weixin.qq.com/s/i019cHmumJIviyLCDPI3sA)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：这篇文章是对一个长达 162 分钟播客内容的深入解读，该播客深入探讨了 OpenAI 的 o1 模型及其与 LLM（大型语言模型）和强化学习（RL）结合的新范式。以下是播客内容的主要总结：

- 1. Agent 系统
	- 基础：推理能力是构建 agent 的基础，需解决 AI 间协作、竞争及任务分工。
	- 工具使用：关键在于提升模型对工具功能的理解和调用能力。
	- 构建要素：强大基础模型、高质量工具、优质 prompt 及学习使用工具的数据集。
	- 数据收集：理想方式是将数据标注嵌入用户日常工作流程。

- 2. 思维链（CoT）与强化学习（RL）
	- 思维链：详细步骤提升模型表现，分显式（明确 token）和隐式（直觉思考）流派。
	- 强化学习：通过 agent 与 environment 交互和 reward 指引学习。
	- 模型反思：允许模型反思修正错误，显著提升 reasoning 任务表现。

- 3. AI 反馈系统与 Human in the Loop
	- AI 优势：快速处理文本并总结，处理复杂评估任务有优势。 
	- Human in the Loop：AI 简化复杂问题，人类做最终判断，提升可扩展性。

- 4. Multi-Agent 与角色分类
	- Multi-Agent：更像 multi-task，需角色分离，如 generator 和 critic。
	- 角色分离：通过不同 persona 实现，提升 multi-agent 系统效率。

- 5. Single-Agent 与 Multi-Agent
	- Single-Agent：在达到超人类水平前，Multi-Agent 表现更优。
	- 过渡阶段：Multi-Agent 可能是过渡产物，未来趋向单一全能模型。

- 6. 数据与方法
	- 数据获取：高质量数据是训练关键，特别是在 reasoning 领域。
	- 合成数据：MCTS 等方法生成高质量合成数据。

- 7. 未来展望
	- 一年内：期待 coding 技能商品化，多模态 reasoning 突破。
	- 三年内：希望看到接近 AGI 水平的模型，解决所有问题。

- 嘉宾与主持人介绍
	- Kimi Kong：Google DeepMind 研究工程师，专注于强化学习。
	- Eric Li：Google Cloud 研究科学家，专注于 LLM 和 MCTS 结合的研究。
	- 苏辉：前微信 AI 研究员，现负责国内一线互联网公司的大模型训练。
	- Cage：原字节数据科学家，现拾象科技研究员。
	- Monica：美元 VC 投资人，前 AWS 硅谷团队和 AI 创业公司员工。

### 🐎 [Syntax Highlighting SwiftUI Code with Swift Syntax](https://sahandnayebaziz.org/blog/syntax-highlighting-swiftui-with-swift-syntax)

[@Kyle-Ye](https://github.com/Kyle-Ye): 作者总结了一些在使用 swift-syntax 时的经验和技巧 , 并最终在 DetailsPro 应用中实现了对 SwiftUI 代码实时更新的语法高亮显示功能。

## 代码

### [SwiftUIFX](https://swiftpackageindex.com/finnvoor/SwiftUIFX)

[@bq](https://github.com/bqlin)：SwiftUIFX 是一个 Final Cut Pro 插件，用于直接将 SwiftUI 视图渲染到视频中。该插件提供了一个容器，打通了从 SwiftUI 到 Final Cut Pro 上屏渲染的链路。项目创造性地解决了几个问题：

1. 如何实现一个 Final Cut Pro 插件。
2. 如何将 UI 绘制成支持输出到 Final Cut Pro 的数据帧（实现比我们想象的要简单😜）。
3. 如何在外部使用 dylib 将我们编写的 SwiftUI 视图跑起来。

思路很有趣，逻辑较简单，是个很好的入门制作 Final Cut Pro 插件的契机。了解更多插件制作可浏览 [Apple 官方文档](https://developer.apple.com/documentation/professional-video-applications/preparing-plug-ins-for-use-in-final-cut-pro)。

### [NSDockTilePlugIn](https://github.com/marioaguzman/NSDockTilePlugIn-Example)

[@Cooper Chen](https://github.com/cjlcooper)：`NSDockTilePlugIn` 是一个用于在 Mac 开发中用于应用未运行时自定义 Dock 图标的插件。通过实现这个插件，开发者可以在应用程序未启动的情况下修改其 Dock 图标，并提供自定义的 Dock 菜单。插件的名称通过应用的 `Info.plist` 文件进行指定，并在登录时或图标被添加到 Dock 时加载。插件可以通过实现 `setDockTile(_:)` 来定制图标，并通过 `dockMenu()` 提供自定义菜单选项。当图标不再有效时（例如应用被移除出 Dock），插件会接收到 `nil` 参数进行销毁操作，这个插件对于部分 Mac 开发用不错的借鉴价值。

## 内推

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

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

## 关注我们

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

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

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