# 老司机 iOS 周报 #294 | 2024-06-24

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

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

## 文章

### 🐕 [使用 Swift 6 语言模式构建 Swift 包](https://juejin.cn/post/7376444924425011210)

[@AidenRao](https://weibo.com/AidenRao): Swift 6 带来了许多重要的新特性，如数据隔离和数据竞争安全检查，这些特性有助于编写更安全、更高效的代码。然而，这些新特性并不会自动启用，需要通过 Swift 6 语言模式显式开启。通过下载和安装 Swift 6 工具链，并在命令行或包清单文件中启用 Swift 6 语言模式，我们可以提前体验和适应这些变化。尽管新特性带来了一些学习和调整成本，但它们最终会使我们的代码更加健壮。

### 🐎 [Here are 3 advanced tips in Swift](https://www.swiftwithvincent.com/blog/here-are-3-advanced-tips-in-swift/)

[@DylanYang](https://github.com/Dylan19Yang): 作者在本文中介绍了三个知识点
1. enumareted 返回的 index 永远是一个从 0 开始的计数器，它与实际数组的 index 是不保证相等的，像 ArraySlice 这种 index 不从 0 开始的情况就会出现问题。更稳妥的情况是使用 zip 组合 indices 或者使用 Algorithms 库的 indexed 方法来进行遍历。
2. 多层嵌套的循环前可以加上标签，方便在内层循环中需要时直接 break 外层循环。
3. 非枚举类型也可以通过方法重载来使用模式匹配。

### 🐕 [A preview of our upcoming UIKitNavigation library](https://www.pointfree.co/blog/posts/145-a-preview-of-our-upcoming-uikitnavigation-library)

[@Barney](https://github.com/BarneyZhaoooo)：文章介绍了即将发布的 UIKitNavigation 库，这是一个为 UIKit 设计的状态管理和导航工具库，灵感来源于 SwiftUI。它包括状态观察、双向绑定和状态驱动导航等功能，旨在简化 UIKit 应用开发。此外，库的工具基于纯 Swift 构建，具有跨平台潜力。

### 🐕 [node-swift: Write NodeJS native modules in Swift](https://github.com/kabiroberai/node-swift)

[@EyreFree](https://github.com/EyreFree)：NodeSwift 是一个让 Swift 与 Node.js 无缝对接的库。它具有以下优点 :

- 安全：充分利用了 Swift 的内存安全和自动引用计数，无需手动管理内存，避免了内存相关的问题；
- 简单：提供了不同层次的 API，适应不同的需求，并且使用渐进式的方式让开发者循序渐进地使用；
- 原生：NodeSwift 的 API 设计遵循 Swift 的惯用法，例如使用 Swift 的 Dynamic Member Lookup 特性让互操作更加自然；
- 全面：在 Swift 中可以访问几乎所有的 Node.js API，包括操作 JavaScript 对象和调度事件循环等；
- 跨平台：支持 macOS、Linux、Windows 甚至 iOS 等多个平台；
- 高效：直接在宿主平台上运行 Swift 代码，相比 WebAssembly 拥有更好的性能，且可以直接访问系统底层 API。

NodeSwift 是 Swift 与 Node.js 互操作的优秀方案，帮助开发者用 Swift 构建 Node.js 模块，或在 Swift 应用中引入 Node.js 的生态，为相关应用开发带来更多可能性。

### 🐎 [Getting started with Swift Testing](https://www.polpiella.dev/swift-testing)

[@Smallfly](https://github.com/iostalks)：Swift Testing 是由 Apple 在 2024 年的 WWDC 上介绍的现代、表达性强、基于宏的测试库，旨在替代 XCTest 用于编写单元测试。文章详细介绍了如何开始使用 Swift Testing，如何使用它编写测试，以及如何将现有的 XCTest 测试迁移到新库中。

### 🐕 [Environment & Preference Updates](https://talk.objc.io/episodes/S01E409-environment-preference-updates?t=63)

[@水水](https://www.xuyanlan.com/categories/iOS/)：本文讨论了 SwiftUI 的视图更新在环境和首选项更改方面的一些微妙之处，并通过简单的例子来一步步解释，感兴趣的读者可以通过本文示例代码进行验证 SwiftiUI 上的环境值、首选项和视图更新上的一些独特点（附视频）。

## 代码

### 🐕 [Enable XcodeLLM for ChinaSKU Mac on macOS 15 Beta 1](https://gist.github.com/Kyle-Ye/4ad1aa92df3a31bd812487af65e16947)

[@Kyle-Ye](https://github.com/Kyle-Ye): Gist 中介绍了如何使用 lldb / DYLD_LIBRARY_INSERT 方式在 macOS 15 Beta 1 上给国行 Mac 设备启用 XcodeLLM 的方案。

> 警告：上述方式均需要关闭 SIP，请提前了解关闭系统完整性保护的风险再操作。


### 🐎 [分析 XPC 通信的图形界面](https://github.com/chichou/XpcScope)

[@Damien](https://github.com/ZengyiMa): XPC 是 macOS / iOS 安全研究无法忽视的一个点，本项目是模仿 Wireshark 的界面，提供图形界面分析用户态进程之间的通信。

## 音视频

### 🐢 [So You Think You Know Git Part 2 - DevWorld 2024](https://www.youtube.com/watch?v=Md44rcw13k4)

[@BluesJiang](https://github.com/BluesJiang): 这个视频介绍了很多 Git 的高级用法，比如 git switch、 Git rebase， git LFS，git scalar，git worktree，gitbutler 等高级用法。里面对每一个功能都做了简要的说明，可以根据自己的兴趣酌情观看。

比较有特点的是 git scalar 一个为大 git 仓库做了优化的 git 命令，git worktree、gitbutler 能让你在同一个仓库里快速切换功能分支，加速你多 feature、bugfix 的开发。

## 内推

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