# 老司机 iOS 周报 #249 | 2023-06-19

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

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

##  Developer - 设计开发加速器

### [WWDC23 讲座集锦 2023 年 6 月 29 日](https://developer.apple.com/events/view/962Y67Q743/dashboard)

报名参加 WWDC23 讲座集锦，了解 Apple 平台的最新技术。

通过本次活动你可以了解 visionOS 在空间计算领域令人难以置信的新机遇，iOS、iPadOS、macOS 和 watchOS 中的最新功能，以及跨语言、框架、工具和服务的重大改进，从而为全球用户打造更为卓越独特的 App 体验。

本次活动包含线下场，欢迎大家来现场参加 ~~ 虽然没有 Vision Pro 体验 ~~。

## 文章

### 🐢 [What’ s new in Swift 5.9?](https://www.hackingwithswift.com/articles/258/whats-new-in-swift-5-9)

[@anotheren](https://github.com/anotheren)：一年两度的 Swift 大版本更新再次到来，让我们看看 Swift 5.9 有什么**全新**变化：

- `if` 和 `switch` 表达式：[SE-0380](https://github.com/apple/swift-evolution/blob/main/proposals/0380-if-switch-expressions.md) 增加了我们在多种情况下使用 `if` 和 `switch` 作为表达式的能力。
- 值和类型参数的配对：[SE-0393](https://github.com/apple/swift-evolution/blob/main/proposals/0393-parameter-packs.md)、[SE-0398](https://github.com/apple/swift-evolution/blob/main/proposals/0398-variadic-types.md) 和 [SE-0399](https://github.com/apple/swift-evolution/blob/main/proposals/0399-tuple-of-value-pack-expansion.md) 结合起来，形成了一系列 Swift 改进，使我们能够使用可变泛型。
- 宏：[SE-0382](https://github.com/apple/swift-evolution/blob/main/proposals/0382-expression-macros.md)、[SE-0389](https://github.com/apple/swift-evolution/blob/main/proposals/0389-attached-macros.md) 和 [SE-0397](https://github.com/apple/swift-evolution/blob/main/proposals/0397-freestanding-declaration-macros.md) 结合起来将宏添加到 Swift 中，这使我们能够创建在编译时转换语法的代码。
- 不可复制的结构和枚举：[SE-0390](https://github.com/apple/swift-evolution/blob/main/proposals/0390-noncopyable-structs-and-enums.md) 引入了无法复制的结构和枚举的概念，这反过来又允许在许多地方共享结构或枚举的单个实例——它们最终仍然拥有一个所有者，但现在可以在不同的地方访问你的代码。
- 引入 `consume` 操作来结束变量绑定的生命周期：[SE-0366](https://github.com/apple/swift-evolution/blob/main/proposals/0366-move-function.md) 将使用值的概念扩展到局部变量和可复制类型的常量，这可能会使希望避免在数据传递时在幕后发生过多的保留 / 释放调用的开发人员受益。
- 方便的 Async[Throwing]Stream.makeStream 方法：[SE-0388](https://github.com/apple/swift-evolution/blob/main/proposals/0388-async-stream-factory.md) 为 `AsyncStream`，`AsyncThrowingStream` 两者添加了一个新方法 `makeStream()`，它将 stream 本身连同其 continuation 一同返回。
- 更多内容 / 代码请参见原文及对应的 Swift Evolution。

### 🐕 [On Endianness - 🪄 Technical Sourcery](https://www.technicalsourcery.net/posts/on-endianness/)

[@Barney](https://github.com/BarneyZhaoooo)：该文章详细探讨了大端序和小端序在计算机中的应用及其各自的优点。大端序和小端序是计算机存储多字节数据类型的两种方式，这两种方式在计算机系统中都有广泛的应用。

- 大端序优势：容易检测符号；符合网络协议约定；符合人类阅读数字的自然习惯；能对未知的无符号整数结构排序。
- 小端序优势：便于检测奇偶性；重新转换指针更简单；对任意精度的整数和算术运算更有优势；在处理任意长度编码和变长编码时更为高效。

### 🐕 [云音乐低代码 + ChatGPT 实践方案与思考](https://mp.weixin.qq.com/s/jaIiVI636uJBOOKsXuHCpw)

[@老驴](https://weibo.com/u/6090610445)：最近生成式 AI 的持续爆火也让很多人开始尝试在真正的产品中去让 AI 落地。网易云音乐的这套在低代码平台中集成生成式 AI 的方案是最近看到过的比较好的落地场景，可以说把自己的平台和 AI 做到了真正有意义的结合，值得参考。


### 🐎 [Swift 的可选值优化](https://mp.weixin.qq.com/s/aloL0oyFUYIukhaqE-YfTA)

[@Damien](https://github.com/zengyima)：本文讨论了 Swift 语言中的 nil 语义及其在内存中的表现，比较了不同数据类型如 Int、Bool、String、Class、Enum 在可选值情况下的内存占用及编译器的优化方法。对 Swift 感兴趣的同学不妨一读。

### 🐕 [UIKit rendering - Part 1、2、3](https://fabernovel.github.io/2021-01-04/uikit-rendering-part-1)

[@JonyFang](https://github.com/JonyFang): 三篇 UIKit 渲染的系列文章，从基础知识到异步绘制和性能优化策略。

- [UIKit Rendering - Part 1](https://fabernovel.github.io/2021-01-04/uikit-rendering-part-1): 介绍 UIKit 渲染基础知识；
- [UIKit Rendering - Part 2](https://fabernovel.github.io/2021-01-04/uikit-rendering-part-2): 通过代码实践，探讨 UIKit 渲染过程中的异步绘制机制；
- [UIKit Rendering - Part 3](https://fabernovel.github.io/2021-01-04/uikit-rendering-part-3): 介绍了 UIKit 渲染中的性能优化策略；

如果对 iOS 应用程序的 UI 渲染感兴趣，这几篇可以查阅下～

## 工具

###  [The unofficial WWDC app for macOS](https://github.com/insidegui/WWDC)

[@zoeGuo](https://github.com/zoeGuo)：这是一款 macOS 上获取 WWDC 资讯的应用，通过 Explore、Schedule、Videos 三个 Tab 可以获取到最新的 WWDC 资讯、日程和视频内容。此外还提供了对 WWDC 视频内容的片段分享、添加笔记、以及 iCloud 同步数据的功能和分享功功能，可以更好的记录自己观看学习 WWDC 的随想和进度。

### [SummarAI Chrome Extension](https://github.com/zhangferry/SummarAI)

[@Crazy](https://github.com/jiyan135960)：在 ChatGPT 横行的当下，利用 ChatGPT 来完成论文精炼的网站已经屡见不鲜，这种操作大大降低了大家获取知识的难度。但是对于精炼博客类型的文章，操作起来却还是有些繁琐，SummarAI 这款 Chrome 插件利用 ChatGPT 对网页进行分析并提取重要信息，缩短复杂文章的读取时间。这款插件安装简单，配置方便，可以很轻松的帮助大家完成对冗长且难度较高的博客进行精要分析。

## 代码

### [HookZzModules](https://github.com/jmpews/HookZzModules/tree/master/AntiDebugBypass)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：HookZzModules 是一个用于在 iOS 应用程序中进行动态函数钩子的开源库。它提供了一种便捷的方式来拦截和修改函数的执行，以实现函数级别的代码注入和调试。通过使用 HookZzModules，你可以在运行时动态地修改应用程序中的函数，包括系统函数和自定义函数，并提供了丰富的钩子选项和回调函数，以满足各种需求。


## 摸鱼周报

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

* 本期话题：智源大会线下参会体验
* 内容推荐：WWDC 2023 相关的新产品与新技术
* 摸一下鱼：OpenAI API 更新；面向国内的 OpenAI API Key 服务 API2D； 《Design for spatial user interfaces》 Session 总结；每个软件开发都应该知道的事；图解 QUIC 连接

## 内推

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