# 老司机 iOS 周报 #356 | 2025-10-27

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

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

## 新手推荐

### 🐕 [Derived Data: 5 Things iOS Developers Do Wrong](https://www.avanderlee.com/xcode/derived-data-5-things-ios-developers-do-wrong/)

[@极速男孩](https://github.com/ztlyyznf001)：这篇文章总结了 iOS 开发者常对 Derived Data 犯的 5 个错误：

- 不理解其用途
- 手动查找文件夹
- 出错时删除整个根目录（应只删特定项目的）
- 不监控构建时间
- 不检查 `.app` 产物以优化

## 文章

### 🐕 [Why a custom ViewModifier is often useless](https://www.swiftwithvincent.com/blog/why-a-custom-viewmodifier-is-often-useless)

[@Barney](https://github.com/BarneyZhaoooo)：文章主要阐述何时需要创建自定义 `ViewModifier`。作者指出，若只需封装不涉及 `@State` 或 `@Environment` 的修饰符，直接使用 `View` 扩展方法即可，无需创建 `ViewModifier` 结构体。仅当需要管理状态或使用属性包装器时，才必须创建 `ViewModifier` 以正确处理这些需求。简而言之，`ViewModifier` 并非总是必需的，应根据实际需求选择合适的实现方式。

### 🐎 [Don't make this mistake with a TaskGroup](https://www.swiftwithvincent.com/blog/dont-make-this-mistake-with-a-taskgroup)
[@Smallfly](https://github.com/iostalks)：这篇文章聚焦 Swift 并发编程中 `TaskGroup` 的常见误用场景，通过示例代码揭示任务结果顺序的潜在问题，并提供简洁的解决方案。核心内容包括：

- **问题现象**：首次使用 `TaskGroup` 时，任务结果默认按完成顺序返回，而非任务创建顺序，导致数组结果顺序随机（如 `fetchData(id:)` 模拟网络延迟后，结果顺序与 `id` 无关）。
- **解决方法**：修改任务返回值为元组（包含原始参数与结果），例如 `(index, result)`，收集结果后通过参数排序，确保最终数组顺序与任务创建顺序一致。

文章通过具体代码演示问题与修复过程，为开发者避免 `TaskGroup` 使用中的「顺序陷阱」提供了清晰的实践指导。

### 🐕 [深入理解 Flutter 的 PlatformView 如何在鸿蒙平台实现混合开发](https://mp.weixin.qq.com/s/iQCb0eSBLFpmRaog9gdHPA)

[@david-clang](https://github.com/david-clang)：本文深入解析了 Flutter 在鸿蒙平台实现 PlatformView 同层渲染的技术方案，其核心实现机制如下：

1. **渲染架构基础**：采用类似 Android 的 VD 模式，通过 ArkUI 的 `NodeContainer` 作为占位容器，`BuilderNode` 将原生 ArkUI 组件转换为可渲染纹理。 
2. **数据驱动管理**：基于 `DVModel` 数据模型驱动 `DynamicView` 进行节点的动态挂载与更新，契合鸿蒙声明式 UI 架构。
3. **纹理合成流水线**：Flutter Engine 通过鸿蒙 Graphic2D 创建 `OH_NativeImage`，该实例同时作为 Surface 供 `BuilderNode` 渲染 ArkUI 控件，并作为 Texture 供 Flutter 引用与合成。
4. **事件传递机制**：触摸事件从 Dart 层下发，经 `EmbeddingNodeController` 中转并转发至原生组件，确保交互响应。
5. **组件生命周期**：通过 `EmbeddingNodeController` 管理 `BuilderNode` 的创建与销毁，实现 PlatformView 的完整生命周期管理。

## 代码

### 🐕 [An Apple Intelligence-Style Glow Effect in SwiftUI](https://livsycode.com/swiftui/an-apple-intelligence-style-glow-effect-in-swiftui/)

[@阿权](https://github.com/bqlin)：文章通过“多图层描边 + 模糊 + 动态渐变”的组合，复现了 Apple Intelligence 风格的发光效果，且支持所有 `InsettableShape`。你可以用它来突出按钮、卡片或文本容器，为界面增添现代感和表现力。

代码细节详见 [GitHub repo](https://github.com/Livsy90/IntelligenceGlow/tree/main)。

## 内推

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