关于 swift-optimise
面向 Swift 和 SwiftUI 应用开发者的性能指南,含 19 条规则,涉及并发、渲染、滚动和动画。目标版本为 iOS 26 与 Swift 6.2,并基于指定的模块化 MVVM-C 架构。
主要功能
- 01三类共 19 条规则
- 02Swift 6 并发指南
- 03SwiftUI 渲染与滚动建议
- 04动画性能实践
- 05基于模块化 MVVM-C 架构
适用场景
- 01将代码迁移至 Swift 6 并发
- 02用 async/await 替换 Combine 发布者
- 03改善滚动和渲染性能
- 04审查 SwiftUI 动画实现
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill swift-optimise安装后在 Claude Code 中输入/swift-optimise确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
metadata.jsonassets/templates/_template.mdreferences/_sections.mdanim-gesture-driven.mdanim-matchedgeometry.mdanim-spring.mdanim-transition-effects.mdanim-with-animation.mdconc-actor-for-shared-state.mdconc-asyncsequence-streams.mdconc-combine-to-async.mdconc-mainactor-isolation.mdconc-swift6-sendable.mdconc-task-id-pattern.mdperf-async-image.mdperf-canvas-timeline.mdperf-drawinggroup.mdperf-equatable-views.mdperf-instruments-profiling.mdperf-lazy-containers.mdperf-task-modifier.mdperf-view-decomposition.md详细介绍
Apple Swift/SwiftUI 性能优化最佳实践
Swift 和 SwiftUI 性能优化综合指南。包含 3 个类别中的 19 条规则,涵盖现代并发、渲染性能和动画性能。面向 iOS 26 / Swift 6.2,使用 @Observable 和 Swift 6 严格并发。
诊所架构约定(iOS 26 / Swift 6.2)
本技能中的所有指南均基于诊所模块化 MVVM-C 架构:
- 功能模块仅导入
Domain和DesignSystem(绝不导入Data或同级功能模块) - App target 是汇聚点,拥有
DependencyContainer、具体协调器和 Route Shell 接线 Domain保持为纯 Swift,并定义模型以及 repository、*Coordinating、ErrorRouting和AppError契约Data负责 SwiftData/网络/同步/重试/后台 I/O,并实现 Domain 协议- 读写流程默认采用过期后重新验证的读取方式和乐观排队写入
- ViewModel 直接调用 repository 协议(默认不设 use-case/interactor 层)
适用场景
在以下情况下参考这些指南:
- 迁移到 Swift 6 严格并发(Sendable、actor 隔离)
- 将 Combine 发布者替换为 async/await
- 实现 @MainActor 隔离和基于 actor 的并发
- 拆分视图以缩小状态失效影响范围
- 使用惰性容器优化滚动和渲染性能
- 使用 Canvas/TimelineView 实现高性能渲染
- 优化前使用 SwiftUI Instruments 进行性能分析
- 构建高性能弹簧动画和转场
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 并发与异步 | 严重 | conc- |
| 2 | 渲染与滚动性能 | 高 | perf- |
| 3 | 动画性能 | 中 | anim- |
快速参考
1. 并发与异步(严重)
conc-combine-to-async- 将 Combine 发布者替换为 async/awaitconc-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 | 新规则模板 |
评论
支持 Markdown