# 老司机 iOS 周报 #265 | 2023-10-30

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

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

## 新闻

### [iOS & iPadOS 17.2 Beta & Xcode 15.1 Beta 2 Release](https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-17_2-release-notes)

上周苹果发布了 [iOS & iPadOS 17.2](https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-17_2-release-notes) 、[watchOS 10.2](https://developer.apple.com/documentation/watchos-release-notes/watchos-10_2-release-notes) 、[Xcode 15.1](https://developer.apple.com/documentation/Xcode-Release-Notes/xcode-15_1-release-notes) 等系列 Beta 版本的更新。较为重要的信息如下：

- SwiftUI 新增了 API ``_logChanges()`` 方便开发者在 Debug 下打印 SwiftUI 的变更。与 ``_printChanges()`` 区别仅在于 ``_logChanges()`` 会将日志也打印到系统控制台中。此 API 对所有 iOS/iPadOS/watchOS 等都有效。

- 对使用 Xcode 15.0 构建包含 swift 代码的 App 会较老的 MAC 版本 (10.13) 启动时崩溃，workaround 方案是添加 ``$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/macosx/libswiftAppKit.dylib`` 到 Other Linker Flags 中，此问题在 15.1 Beta 中已修复。详见：[swift/issues/68163](https://github.com/apple/swift/issues/68163)。

## 文章

### 🐎 [Bad practice: not using Phantom Types](https://www.swiftwithvincent.com/blog/bad-practice-not-using-phantom-types)

[@Damien](https://github.com/ZengyiMa)：这篇文章讨论了在 Swift 编程中使用虚类型（Phantom Types）引发的错误。作者首先构造了 2 个示例对象，使用虚函数并且导致了错误的行为。随后提出了改进的方案，从而避免了错误的代码行为，想了解 Swift 虚函数感兴趣的同学不妨一读。

### 🐎 [Designing for spatial computing: from iOS and iPadOS to visionOS](https://www.createwithswift.com/designing-for-visionos-shifting-from-ios-and-ipados/)

[@Smallfly](https://github.com/iostalks)：这篇文章介绍了苹果的 visionOS 以及它在空间计算领域的重要性。文章强调了设计师和开发人员需要了解空间设计的基本原则，以及如何将应用程序从 iOS/iPadOS 平稳地过渡到 visionOS。文章还介绍了 visionOS 应用程序的核心结构，包括窗口、体积、标签栏、侧边栏、装饰、菜单和弹出窗口、以及模态视图。最后，文章强调在从 iOS/iPadOS 过渡到 visionOS 时，需要考虑应用程序的核心功能，并将其适应空间计算范式，而不仅仅是简单地将应用程序移植到新平台。

### 🐎 [Being a good citizen in the land of SwiftSyntax](https://www.pointfree.co/blog/posts/116-being-a-good-citizen-in-the-land-of-swiftsyntax)

[@zvving](https://github.com/zvving)：作者使用 SwiftSyntax 依赖管理的实例，详细解释了如何制定更加灵活的主版本依赖声明，从而规避由与第三方库的依赖关系引起的冲突。同时，他建议通过将核心库和可选库分拆，来防止不必要的编译开销。这些思路为 Swift 库的开发者提供了有益的参考。

### 🐎 [Apple ’ s use of Swift and SwiftUI in iOS 17](https://blog.timac.org/2023/1019-state-of-swift-and-swiftui-ios17/)

[@JonyFang](https://github.com/JonyFang)：通过 iOS 内置应用程序使用的编程语言，分析到 iOS17 的版本过程中 Swift、SwiftUI 的覆盖比例。通过分析结果可以看到：Objective-C 仍然是 iOS 的核心，并被大多数应用程序直接或间接使用。Swift 和 SwiftUI 的采用持续增长，而 Objective-C、C 和 C++ 的份额逐渐减少。

### 🐎 [The Care and Feeding of Developer ID](https://developer.apple.com/forums/thread/732320)

[@水水](https://www.xuyanlan.com/)：这个链接集中记录了对于开发者 ID 签名身份方面会遇到的问题，以及一些注意事项和 Tips。这里还介绍了如何备份你的私钥以及如果你没有独立备份你的开发者 ID 签名身份，如何从 Mac 的常规备份中恢复它。读者可以收藏此链接，可以作为后续关于签名方面的问题参考 ~

## 工具

### 🐎 [Apparency - The App That Opens Apps](https://www.mothersruin.com/software/Apparency/)

[@J_Knight_](https://github.com/knightsj)：介绍了一个可以查看 Mac 应用信息的 Mac 应用：Apparency。具体可以查看的信息是：使用的 framework，Info.plist，macOS version info，identifiers，document types 和 URLs 等等信息。

## 音视频

### [Matthew Massicotte - The Bleeding Edge of Swift Concurrency](https://www.youtube.com/watch?v=HqjqwW12wpw)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：这是一个探讨 Swift 并发编程主题的视频，并发编程是一个涉及异步操作和并行处理的领域。该视频将介绍 Swift 中的 async/await 机制和 actor 模型，并讨论如何避免在引入这些机制时可能出现的竞争条件和死锁等陷阱。它的目标是帮助观众了解如何在编写并发代码时避免常见的陷阱和错误，从而编写出更可靠、高效的代码。

## 内推

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