# 老司机 iOS 周报 #301 | 2024-08-12

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

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


## WWDC24 内参

### 🌟 [WWDC24 10177 - 用 HDR 图片点亮你的 App](https://xiaozhuanlan.com/topic/3465798021)

[@陈震昊](https://github.com/szzxczh1996)：本文首先简要阐述了 HDR 相关的基本概念，例如 reference white、headroom 以及 tone mapping，然后回顾了苹果以往建立的 HDR 标准以及 HDR 渲染技术，最后重点介绍了今年新推出的 Adaptive HDR 标准以及在该标准下，如何对 HDR 图片进行读写、编辑和展示。

###  🌟 [WWDC24 10073 - 提升 SwiftUI 的可访问性体验](https://xiaozhuanlan.com/topic/7683249501)

[@Jason](https://github.com/pujiaxin33)：深入了解 SwiftUI 如何提供开箱即用的内置 Accessibility，以及如何使用工具来完善和打造你的应用程序的 Accessibility。

## 新闻

### [‘ You are a helpful mail assistant, ’ and other Apple Intelligence instructions](https://www.theverge.com/2024/8/5/24213861/apple-intelligence-instructions-macos-15-1-sequoia-beta)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：在 macOS Sequoia 15.1 开发者测试版中，有用户发现了一些包含人工智能后台提示的 JSON 文件，并分享了如何找到这些文件的方法。这些文件揭示了苹果 AI 工具在接收到用户提示之前所接收到的隐藏指令。这些指令为 AI 工具提供了如何响应用户输入的指南，例如邮件助手如何基于邮件内容提问，以及如何生成“回忆”视频等。此外，还提到了一些具体的指令要求，如限制字数、不捏造事实信息等。同时，本文也提醒用户在探索这些系统文件时要谨慎行事，因为它们涉及系统敏感信息。

## 文章

### 🐕 [SwiftUI app lifecycle: issues with ScenePhase and using AppDelegate adaptors](https://www.jessesquires.com/blog/2024/06/29/swiftui-scene-phase/)

[@Barney](https://github.com/BarneyZhaoooo)：这篇文章入剖析了 SwiftUI 的 `ScenePhase` API，并指出了它在跨平台应用生命周期管理上的局限性。文章建议，为了更细致地控制应用生命周期，应该扩展 `ScenePhase` 或引入新的 `AppPhase` API。同时，作者发现在 macOS 上，依赖 `ScenePhase` 不如直接使用 `NSApplicationDelegate` 来得可靠。为开发者在构建跨平台应用时提供了宝贵的见解。

### 🐎 [Swift Protocol 背后的故事(理论)](https://zxfcumtcs.github.io/2022/02/04/SwiftProtocol2/)

[@DylanYang](https://github.com/Dylan19Yang)：本文作者从原理上解析了在 Swift 中 Protocol 是如何实现的。Swift runtime 为每个类型都生成了类型元信息（Type Metadata），不同类型的元信息的共同特点是都包含了 VWT、Kind。Class、Struct 的实例上通过 Existential Container 模型来指导 Protocol 变量布局内存，非类约束的 Protocol，会在此模型中通过 type 指向真实类型的元信息，类约束的 Protocol 因为类的实例中已包含了类的元信息，故此模型中不再包含。而泛型在无约束、类约束或者 Protocol 约束的情况下表现均有不同，并在特定条件下特化，改为静态派送来提升性能。感兴趣的读者可以阅读本文，了解更细节的知识。

### 🐕 [轻踩一下就崩溃吗——踩内存案例分析](https://mp.weixin.qq.com/s/9OCFb2cH-H5zbaIT5VAS9w)

[@Cooper Chen](https://github.com/cjlcooper)：本文探讨了内存踩踏问题的现象、成因及解决方案，结合具体案例和代码示例，详细解析了全局符号介入和编译参数不一致引发的内存错误。主要通过四个章节进行了分析，分别是：
- 踩内存问题分析成本高，需要借助专业的调试工具和方法
- 即使代码逻辑本身没有问题，全局符号介入机制也可能导致内存越界
- 编译参数不一致会引发内存踩踏崩溃
- 工程标准化，能够有效减少踩内存等问题的发生

### 🐎 [Zoom transitions](https://douglashill.co/zoom-transitions/)

[@极速男孩](https://github.com/ztlyyznf001/)：这篇文章主要介绍了如何在 iOS 18 SDK 中分别用 SwiftUI 和 UIKit 使用缩放过渡。作者通过具体的代码示例展示了如何在不同的场景中实现缩放动画，比如从一个列表项缩放到一个全屏的详细视图。此外，文章还讨论了如何优化源视图和目标视图的选择，以确保过渡动画的自然和流畅。

## 工具

### 🌟🌟🌟 [Cursor: The AI Code Editor](https://www.cursor.com/)

[@kemchenj](https://kemchenj.github.io/)：Cursor 是基于 VSCode 的一个 AI 编辑器，实际使用比起 VSCode+Copilot 体验好上不少。使用 Cursor 只需要会用两个快捷键：

- CMD+k，单文件编辑，选中你要修改的代码，告诉他需要修改的内容，还能贴 UI 图
- CMD+i，多文件编辑，直接按快捷键，然后按 + 号指定改动的文件，告诉他需要修改的内容

然后站起来走两步，拿起杯子喝口水，看着他把代码写好，健康编程从此刻开始！！！

## 音视频

### 🐢 [Embedded Swift Tutorial - Getting Started (Everything you need to know)](https://blog.supereasyapps.com/embedded-swift-tutorial-getting-started-everything-you-need-to-know/)

[@Kyle-Ye](https://github.com/Kyle-Ye): 一篇关于 Embedded Swift 的详细教程，对嵌入式 + Swift 方向感兴趣的可以观看。目前 Embedded Swift 还处于较早期的玩具阶段，期待后续搭配 HomeKit/Matter 生态的进一步发展。

## 内推

重新开始更新「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）
