name: swift-optimise description: Swift 6.2 和 SwiftUI 性能优化,针对 iOS 26 clinic 架构代码库。涵盖 async/await 并发模式、Sendable/actor 隔离、视图/渲染性能以及动画性能,同时保留 App、Feature、Domain 和 Data 层的模块化 MVVM-C 边界。在分析或优化 clinic 模块中的 Swift/SwiftUI 行为时使用。
Apple Swift/SwiftUI 性能优化最佳实践
全面的 Swift 和 SwiftUI 性能优化指南。包含 19 条规则,分为 3 个类别,涵盖现代并发、渲染性能和动画性能。针对 iOS 26 / Swift 6.2,使用 @Observable 和 Swift 6 严格并发。
Clinic 架构合约 (iOS 26 / Swift 6.2)
本技能中的所有指导都假设采用 clinic 模块化 MVVM-C 架构:
- Feature 模块仅导入
Domain+DesignSystem(永不导入Data,永不导入同级功能) - App 目标是汇聚点,拥有
DependencyContainer、具体协调器和 Route Shell 布线 Domain保持纯 Swift,定义模型以及仓库、*Coordinating、ErrorRouting和AppError合约Data拥有 SwiftData/网络/同步/重试/后台 I/O,并实现 Domain 协议- 读/写流默认为陈旧-验证读取和乐观排队写入
- ViewModels 直接调用仓库协议(无默认用例/交互器层)
何时应用
在以下情况下参考这些指南:
- 迁移到 Swift 6 严格并发(Sendable、actor 隔离)
- 用 async/await 替换 Combine 发布者
- 实现 @MainActor 隔离和基于 actor 的并发
- 分解视图以减少状态失效的影响范围
- 使用懒加载容器优化滚动和渲染性能
- 使用 Canvas/TimelineView 进行高性能渲染
- 在优化前使用 SwiftUI Instruments 进行分析
- 构建高性能弹簧动画和过渡
规则类别按优先级
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 并发与异步 | 关键 | conc- |
| 2 | 渲染与滚动性能 | 高 | perf- |
| 3 | 动画性能 | 中等 | anim- |
快速参考
1. 并发与异步(关键)
conc-combine-to-async- 用 async/await 替换 Combine 发布者conc-mainactor-isolation- 使用 @MainActor 代替 DispatchQueue.mainconc-swift6-sendable- 采用 Sendable 和 Swift 6 严格并发conc-task-id-pattern- 使用 .task(id:) 进行响应式数据加载conc-actor-for-shared-state- 用 actor 替换基于锁的共享状态conc-asyncsequence-streams- 用 AsyncSequence 替换 NotificationCenter 观察者
2. 渲染与滚动性能(高)
perf-view-decomposition- 分解视图以限制状态失效的影响范围perf-instruments-profiling- 在优化前使用 SwiftUI Instruments 进行分析perf-lazy-containers- 对大型集合使用懒加载容器perf-canvas-timeline- 使用 Canvas 和 TimelineView 进行高性能渲染perf-drawinggroup- 对复杂图形使用 drawingGroupperf-equatable-views- 添加 Equatable 一致性以防止虚假重绘perf-task-modifier- 使用 .task 修饰符代替 .onAppear 进行异步工作perf-async-image- 使用带缓存策略的 AsyncImage 处理远程图像
3. 动画性能(中等)
anim-spring- 默认使用弹簧动画anim-matchedgeometry- 使用 matchedGeometryEffect 进行共享过渡anim-gesture-driven- 使动画基于手势驱动anim-with-animation- 使用 withAnimation 进行状态驱动的过渡anim-transition-effects- 对视图插入和移除应用过渡效果
如何使用
阅读各个参考文件以获取详细解释和代码示例:
参考文件
| 文件 | 描述 |
|---|---|
| references/_sections.md | 类别定义和排序 |
| assets/templates/_template.md | 新规则的模板 |