核心用法
该技能为 SwiftUI 开发提供系统化的 UI 模式指导,核心围绕现代状态管理(@State、@Observable、@Environment)与组合式架构展开。工作流程遵循六步法:定义状态归属 → 注入环境依赖 → 层级草图设计 → 异步任务实现 → 无障碍适配 → 验证迭代。
两大应用场景:
- 存量项目:通过
rg等工具定位相似实现,优先采用原生状态而非 ViewModel,保持局部状态隔离 - 新项目脚手架:从
app-scaffolding-wiring.md入手,搭建 TabView + NavigationStack + Sheets 的导航骨架
组件库以 references/components-index.md 为入口,每个组件文档包含意图说明、最小可用模式、性能陷阱及仓库内真实示例路径。
显著优点
1. 拥抱 SwiftUI 原生范式:明确反对过度工程化的 ViewModel 层,降低样板代码
2. 实战导向:所有模式绑定具体代码示例,通过 rg 检索实现"以用例驱动学习"
3. 渐进式复杂度控制:从脚手架到组件细化,支持项目不同阶段的切入
4. 性能意识内置:文档明确要求显式处理 loading/error 状态,避免阻塞 UI
潜在局限
- 生态特异性:仅适用于 Apple 生态 SwiftUI 开发,对跨平台方案(React Native、Flutter)无参考价值
- 版本演进风险:SwiftUI API 迭代快(如 iOS 17+ 的
@Observable),旧版本项目可能面临兼容适配 - 抽象层级固定:侧重 UI 层模式,对数据层架构(Repository、Clean Architecture)涉及较少
适合人群
- 中高级 iOS 开发者从 UIKit/MVVM 向 SwiftUI 迁移
- 需要统一团队 SwiftUI 编码规范的 Tech Lead
- 追求声明式 UI 性能优化的开发者
常规风险
| 风险类型 | 说明 |
|---------|------|
| 过度简化 | 盲目遵循"避免 ViewModel"可能导致业务逻辑无处安放 |
| 状态爆炸 | `@Environment` 滥用会造成隐式依赖,增加测试难度 |
| 异步竞态 | `.task` 未配合取消机制时,快速切换视图可能引发网络请求堆积 |