# 老司机 iOS 周报 #281 | 2024-03-18

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

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

## 文章

### 🐕 [Swift Predicate: 用法、构成及注意事项](https://fatbobman.com/zh/posts/swift-predicate-usage-composition-and-considerations/)

[@JonyFang](https://github.com/JonyFang): 文章详细介绍了如何有效利用 Swift Predicate，包括谓词的构建技巧、全局函数和实例方法的限制、支持创建多种泛型参数的谓词、线程安全和序列化等。通过具体代码示例，展示了 Swift Predicate 在不同场景下的应用，如如何处理可选值、实现线程安全的数据处理等，同时对比了 NSPredicate 与 Swift Predicate 的不同之处，强调了 Swift Predicate 在 Swift 开发中的好处和优势。

### 🐎 [Third-party libraries acknowledgments using a Settings bundle](https://www.avanderlee.com/workflow/third-party-libraries-acknowledgments-swift-packages/)

[@Damien](https://github.com/ZengyiMa): 三方库可以帮助开发者更快地构建应用，但通常会包含开源协议 License，如 MIT License 等，本篇文章介绍了如何在你的应用中添加三方库致谢和开源协议的展示信息，而不需要花费太多的工作，作者介绍了一个开源项目：swift-package-list，并且提供了一键集成脚本，推荐各位 iOS 开发者也集成致谢模块，这将会让您的 App 更加合规。

### 🐕 [What you should know about visionOS volumes before using them in an app](https://www.lunarskydiving.com/blog/volume-limitations/)

[@EyreFree](https://github.com/EyreFree)：这篇文章讨论了 visionOS 中使用 volumes 时的一些限制。作者列出了 15 个问题，包括 volumes 创建后无法改变大小，最大尺寸限制为 2 立方米，以及受用户 Window Zoom 设置的影响而改变大小。还提到了 volumes 的初始位置无法设置，手势追踪和射线投射功能不支持，且 volumes 可能无法与系统控件或评分提示交互。文章建议，如果这些限制影响到应用设计，开发者可以考虑使用 immersive space。感兴趣的朋友可以看一下。

### 🐕 [Debug for visionOS using Xcode simulator visualizations](https://www.createwithswift.com/debug-visionos-using-xcode-simulator-visualizations/)

[@Barney](https://github.com/BarneyZhaoooo)：这篇文章讲解了如何通过使用 Xcode 的 visionOS 模拟器中的六种主要调试模式（锚定、轴向、边界、碰撞形状、遮挡网格和表面模式）进行应用开发。这些模式有助于完成空间定位、理解定向、增强空间认知、事件检测、实现虚实交互以及精确实体定位。文章还指出了额外资源，以便于更好地运行和交互应用。掌握这些调试模式对于开发出富有交互性的空间计算应用并充分利用诸如 Apple Vision Pro 等设备至关重要。

### 🐢 [Modding Plugins back into Xcode](https://bryce.co/xcode-plugin-loader/)

[@享耳先森](https://github.com/iblacksun)：因 macOS 安全机制升级导致 Xcode 老的插件体系被废弃，本文写了与此相关的一些 Xcode 插件背景知识，以及提供了一些 ` 黑魔法 ` 让新版 Xcode 也可以加载老的插件，如果对 Xcode 插件开发敢兴趣，建议阅读。

### 🐎 [If you ’ ve created a visionOS app with a volume, you probably did it wrong](https://www.lunarskydiving.com/blog/volume-window-zoom/)

[@Smallfly](https://github.com/iostalks)：文章讨论了 visionOS 应用开发中的 volume 内容剪裁问题，指出 Apple 官方示例代码在用户更改 Window Zoom 设置时可能导致异常。Apple 工程师说是符合预期的，并提出使用 GeometryReader3D 来动态调整内容以适应 volume 大小的解决方案，文档中未充分说明这一点请开发者关注。

### 🐎 [Vision Pro Connectivity](https://buttondown.email/varrall/archive/vision-pro-connectivity/)

[@极速男孩](https://github.com/ztlyyznf001)：这篇文章探讨了如何通过连接多个设备，特别是 iPhone 和 Apple Watch，来增强使用苹果 Vision Pro 的体验，以及如何利用 Multipeer Connectivity 和 Watch Connectivity 框架实现这一目标。作者同时还讨论了一些可能的应用场景，例如使用苹果铅笔进行更精确的输入、利用 Apple Watch 上的触觉反馈来反映 Vision Pro 上的操作，以及设计需要多个设备协同合作的游戏等。

### 🐎 [Shattered Glass: Customizing Windows in visionOS](https://blog.overdesigned.net/posts/2024-02-29-visionos-window-basics/)

[@DylanYang](https://github.com/Dylan19Yang)：本文介绍了如何在 visionOS 的开发中自定义视图的样式，详细讲述了几种视图常用的 modifier，每种样式都有给出相关的图片示例，简单易懂。

### 🐎 [`__inline__` 是否会改变 local static variable 的行为？](https://juejin.cn/post/7345692979075039247)

[@kemchenj](https://kemchenj.github.io)：本文介绍了为什么不能将 `__inline__` 的作用理解为宏展开：

- `__inline__` 并不会改变局部 `static` 变量原本的行为，因为编译器将最终决定是否进行 inline ，编译器自然应该抹平区别。当然你如果还添加了 `__attribute__((always_inline))` 就一定会内联。
- 尽量不要在 .h 中声明 `static` 函数（包括 `NS_INLINE` 函数），除非你很清楚你在做什么。

## 内推

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