# 老司机 iOS 周报 #339 | 2025-06-23

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

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

## 新手推荐

### 🐎 [Unique values in Swift: Removing duplicates from an array](https://www.avanderlee.com/swift/unique-values-removing-duplicates-array/)

[@阿权](https://github.com/bqlin)：文章介绍了 Swift 中数组去重一些最佳实践。

1. 使用 Set 去重（O(n)），要求元素遵循 Hashable：
   1. 不关心顺序场景，可以直接创建对应的 Set，再转换为数组来去重。
   2. 对于保留顺序场景，也可以增加 Set 来跟踪出现过的元组，过滤出重复项。
2. 使用 [Swift Algorithms Package](https://github.com/apple/swift-algorithms) 提供的 `uniqued()` 方法。虽然功能完善，不过对于这个场景可能有些大材小用了，还可以能引入不必要的依赖。

大家在工程实践中，推荐用方法一也够用了，另外这也是各公司面试题中的必考基础算法之一噢。

## 文章

### 🐕 [Automatic Observation Tracking in UIKit and AppKit: The Feature Apple Forgot to Mention](https://steipete.me/posts/2025/automatic-observation-tracking-uikit-appkit)

[@AidenRao](https://weibo.com/AidenRao)：苹果在 iOS 18/macOS 15 中为 UIKit/AppKit 框架秘密添加了“自动观察追踪”功能。开发者只需在应用的 Info.plist 文件中启用一个键值，UI 就能自动响应数据变化，类似 Swift 的 @publish。（从 iOS 26 开始，此功能默认启用。）

### 🐎 [Recreating the bird animation from Swift.org](https://alexwlchan.net/2025/swift-bird-animation/)

[@Smallfly](https://github.com/iostalks)：这篇文章揭晓了 [Swift.org](https://www.swift.org/) 首页那只「飞鸟」的诞生过程。作者深入剖析了这个令人印象深刻的动画：它并非视频，而是巧妙地利用 HTML5 Canvas 和 JavaScript 实现的纯代码杰作。
核心亮点在于：
1. 「画笔」​效果：​ 用特殊的 虚线路径（dash pattern）​ 技巧，模拟出画笔逐渐绘制出飞鸟轨迹的动态。
2. 精准遮罩：​ 通过 globalCompositeOperation 技术，将绘制出的动态路径作为「模具」，精准地揭示出底层的精美图像。
3. 流畅动画：​ 借助 Anime.js 库 实现平滑自然的运动效果，并考虑了页面加载（MutationObserver）和用户偏好（prefers-reduced-motion）。

### 🐎 [Tips and tricks for when using SwiftUI ’ s ViewBuilder](https://www.swiftbysundell.com/articles/swiftui-viewbuilder-tips-and-tricks/)

[@DylanYang](https://github.com/Dylan19Yang)：本文作者主要介绍了使用 SwiftUI 中的 ViewBuilder 类型的一些实用小建议。比如通过在合适的地方添加 ViewBuilder 属性来使得我们自定义的 View 初始化时可以使用 SwiftUI 风格的 View 描述方式。以及提供了两种不同方法达成初始化参数缺省的方式，以简化自定义 View 的初始化。这些方法虽然并不起眼，但是可以让我们在组织代码的时候获得更多的灵活性。

## 工具

### [enableAppleAI](https://github.com/kanshurichard/enableAppleAI)

[@ChengzhiHuang](https://github.com/ChengzhiHuang)：可以开启国行设备体验 Apple AI 的工具，优势是不用长期关闭 SIP (完成后可重新开启)。原理是通过修改 eligibilityd 沙盒文件 + 锁权限 。需要注意的是，其中关于注入 eligibilityd 相关代码报错的描述存在一些错误，[XcodeLLMEligible](https://github.com/Kyle-Ye/XcodeLLMEligible/) 并未替换系统的 eligibilityd ，仅是在开发调试 eligibilityd 时对齐系统行为所用。

### [Notepad.exe](https://notepadexe.com/)

[@EyreFree](https://github.com/EyreFree)：Notepad.exe 是专为 Swift 开发设计的原生 macOS 应用，主打轻量高效，可替代 Xcode 用于快速原型和代码实验。它支持 iOS 模拟器集成、智能代码补全、实时错误检测，具备便签式悬浮笔记、库式工作流等功能，还有内置 AI 辅助编码。工具注重隐私，数据本地存储，界面简洁无冗余，适合想避开重型 IDE 的开发者，感兴趣的朋友可以试试。

## 代码

### 🐕 macOS 26 恢复启动台小技巧

[@Barney](https://github.com/BarneyZhaoooo)：macOS 26 恢复启动台小技巧，终端执行一下命令后重启电脑即可。

```

sudo mkdir -p /Library/Preferences/FeatureFlags/Domain
sudo defaults write /Library/Preferences/FeatureFlags/Domain/SpotlightUI.plist
SpotlightPlus -dict Enabled -bool false

```

### [apple-on-device-openai](https://github.com/gety-ai/apple-on-device-openai)

[@Cooper Chen](https://github.com/cjlcooper)：这个创新项目巧妙地将 macOS 26 内置的 Apple Intelligence 本地模型（3B 参数）封装成兼容 OpenAI API 的接口，让开发者能在第三方 AI 客户端中直接调用这个轻量级模型，实现隐私优先的本地推理。

技术亮点包括：

- 完整的 OpenAI API 协议兼容，无缝对接现有生态
- 针对 M 系列芯片优化的本地推理引擎
- 智能上下文管理，支持多轮对话 
- 典型响应速度控制在 800ms 内（M3 设备实测）

目前项目已在 GitHub 开源，这种创造性地"桥接"系统级 AI 能力的思路，为桌面端 AI 应用开发提供了新范式。对于关注隐私计算和边缘 AI 的开发者，这无疑是个值得研究的样本。

## 内推

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