# 老司机 iOS 周报 #290 | 2024-05-27

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

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

## 新闻

### [Incorrect bundle purchase payments: Fixed!](https://lapcatsoftware.com/articles/2024/5/2.html)

作者 5 月初发现苹果从 24 年 2 月起，对于应用内包含了 [App 套装销售(Offering app bundles)](https://developer.apple.com/cn/app-store/app-bundles/) 的 App ，会少给予开发者一份原本 App 的购买费用，即：错误地从 App 套装销售 的购买收益中两次减去了之前购买的应用程序的价格。

在作者提交了反馈后，苹果回电问题已被发现，所有受影响的开发者将得到对应损失的补偿。

## 文章

### 🐢 [探讨跨平台技术与跨平台 UI 框架及 Kotlin Multiplatform 在 bilibili 的实践](https://mp.weixin.qq.com/s/b8_s1iboJMEdEvyMd59u-g)

[@JonyFang](https://github.com/JonyFang): 本文以相对客观的事实数据比对了目前移动领域的多个跨平台语言的横评，也相对主观的针对当前的大环境下的一些跨平台技术的思考及 B 站的选型做了一些解读。希望可以为读者开阔思路，也希望如果能拉拢到同样观点的大佬们共同一起反哺基于 Kotlin 跨平台的生态的建设。从而做到社区全局收益。后续 B 站会持续继续输出关于 KMP 技术的技术及实践的深度文章，也会持续关注跨平台技术的发展，希望能够在这个领域有更多的交流。

### 🐎 [Is Dynamic Isolation Bad?](https://www.massicotte.org/dynamic-isolation)

[@zoeGuo](https://github.com/zoeGuo)：文章讨论了 Swift 并发中的动态隔离与静态隔离的区别和应用。静态隔离通过使用像 `nonisolated`,`isolated`,`actor`, 和 `global actor` 这样的关键字来标记类或代码块，确保它们在编译时就定义好运行环境，是由编译器来处理的隔离。动态隔离使用运行时结构如锁来实现，需要在运行时正确地协调。文中举例用两种方式实现原子性，静态隔离固然安全，但动态隔离灵活便捷，要选择合适的方式解决并发问题。

### 🐕 [Faster Git checkouts on NFS and SSD with parallelism](https://matheustavares.gitlab.io/posts/parallel-checkout)

[@AidenRao](https://weibo.com/AidenRao): 本篇文章主要介绍在大型存储库上使用并行 checkout 功能，此功能可将某些 checkout 操作在 SSD 上的速度提高 3.6 倍，在 NFS 挂载上的速度提高 4.5 倍。且所有使用到 checkout 机制的 git 命令都能收益，包括：clone, reset, switch, restore, merge 等。


### 🐕 [计算机系统篇之链接（15）：共享库拦截技术之运行时库打桩](https://csstormq.github.io/blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F%E7%AF%87%E4%B9%8B%E9%93%BE%E6%8E%A5%EF%BC%8815%EF%BC%89%EF%BC%9A%E5%85%B1%E4%BA%AB%E5%BA%93%E6%8B%A6%E6%88%AA%E6%8A%80%E6%9C%AF%E4%B9%8B%E8%BF%90%E8%A1%8C%E6%97%B6%E5%BA%93%E6%89%93%E6%A1%A9%EF%BC%88%E4%B8%8A%EF%BC%89)

[@Damien](https://github.com/ZengyiMa): 本文主要讨论了 Linux 系统中的运行时库打桩技术，这是一种允许截获对共享库函数的调用，取而代之执行自己代码的技术。文章详细解释了运行时库打桩的实现原理，以及如何在加载程序时拦截标准库的 API（以 malloc/free 为例）的实现过程。

### [Scaling ChatGPT: Five Real-World Engineering Challenges](https://newsletter.pragmaticengineer.com/p/scaling-chatgpt)

[@老驴](https://weibo.com/u/6090610445)：这篇文章是采访了来自 OpenAI 的 Evan Morikawa，讲述了他们在爆炸增长的用户量下，是怎么解决一些难以解决的问题工程问题的。

他主要提到了下面的几点：

1. KV 缓存和 GPU RAM 的管理。
2. 批处理大小的优化。
3. 正确的度量指标。
4. 寻找 GPU 资源。
5. 缺乏自动扩展的能力。

这些问题在比较早期的公司都比较容易遇到，但是像 OpenAI 这次这么快速爆炸的用户量增长，应该也算是比较少见的了。如果对 OpenAI 感兴趣的同学，建议读一读原文。

## 代码

### [HandVector](https://github.com/XanderXu/HandVector)

[@BluesJiang](https://github.com/BluesJiang)：这个是一个在 VisionOS 平台上实现手势识别的开源库。主要是通过 ARKit 拿到手部骨骼节点后，通过余弦相似的算法，来评估手部骨骼节点与目标手势的相似度，以此来支持手势识别。还可以预先录制自己期望的手势作为匹配目标，实现任意手势的识别和匹配。
本开源库还介绍了一种如何在模拟器中调试手势识别算法的方法，因为官方模拟器并没有提供访问摄像识别手势的能力。方案主要是使用 Google 的 MediaPipes 来代替 Vision Pro 真机上的手势识别能力，然后将数据投入 Swift 代码中进行测试。
这个也是少有的在 Swift Native 侧开源的基础算法仓库之一，可以提供参考和借鉴。

## 书

### 【 iOS 】 Apple 增强现实（Apple Augmented Reality）「[上卷](https://bytedance.larkoffice.com/docx/doxcnYJ8ZNlDkdguWyuxrT9Vrje)」「[下卷](https://bytedance.larkoffice.com/docx/doxcncDbOnTfHuJDEXpTx3Cwwpb)」
[@Smallfly](https://github.com/iostalks)：这是一本 raywenderlich 出品的 AR 教程，国内的同学翻译。这本书是为初中级 iOS 开发者设计的，旨在帮助读者使用 Swift 构建苹果平台上的沉浸式增强现实（AR）体验。

书中涵盖了以下主题：
- **Reality Composer & Reality Files**: 学习如何使用 Reality Composer 创建 AR 体验，以及如何使用 Reality Converter 和 USDZ 文件。
- **RealityKit**: 一个用于构建丰富 AR 体验的框架。
- **Facial Blend Shapes**: 学习如何使用面部融合形状来创建反应用户面部表情的 AR 面具。
- **ARKit**: 苹果的 AR 开发框架，用于创建交互式 AR 体验。
- **Raycasting & Physics**: 学习如何在 AR 应用中使用射线投射和物理引擎。
- **ECS & Collaborative Experiences**: 探索如何创建多人共享的 AR 体验。

书籍分为多个部分，每个部分都通过项目来教授特定的技能和概念。例如，使用 Reality Composer 创建交互式虚拟鼓套件，使用图像锚点和跟踪创建交互式 AR 商务名片，以及使用 RealityKit 和面部跟踪创建类似 Snapchat 的面部滤镜应用等。

如果你对 AR 开发感兴趣，可以直接访问提供的链接。

### [【 iOS 】并发（Concurrency）](https://bytedance.larkoffice.com/docx/doxcnMYZcL7DvPKuE9IN0iJ4eKh)

[@DylanYang](https://github.com/Dylan19Yang)：这是一本 raywenderlich 出品的 iOS 并发（Concurrency）教程，国内的同学翻译。这本书能够帮助 iOS 初学者理解并发的概念，并且快速上手实践。需要注意的是，这本书中讲述的并发是以 GCD（Grand Central Dispatch）实现的，而非最新的 Swift 并发框架（Swift Concurrency），考虑到 GCD 依然是当前的主流，这本书非常值得一读。

书籍分为多个章节，详细解释了并发的概念，以及 GCD 和 Operations 的原理和实际使用的方式。本书使用了诸多的代码示例使读者便于理解，尤其是最后通过 CoreData 的案例展现了并发如何在实际中应用。除此之外，本外也讲述了如何通过 Thread Sanitizer 来分析并发中常见的数据竞争问题。

整体而言，这是一本内容翔实的并发教程，感兴趣的读者可以收藏后反复品读。

## 内推

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