用途:系统排查与修复 SwiftUI 性能问题,包括不必要的视图重求值、视图标识(identity)问题、body 中昂贵计算以及懒加载使用错误。当视图卡顿、滚动掉帧、视图在数据未变时反复更新,或需要理解 @Observable 与 ObservableObject 差异、AnyView 性能影响时使用。
主要能力:提供症状到方案的决策树,按“重渲染、滚动慢、状态丢失或异常动画、已知陷阱、原因不明”分流到对应参考文件;给出 API 最低版本对照(如 Self._printChanges() 需 iOS 15,@Observable 需 iOS 17/macOS 14,LazyVStack 需 iOS 14);列出常见错误与修复,如 VStack 中大量 ForEach 未用懒容器、用 AnyView 擦除类型、在 body 中创建 DateFormatter、观察整个模型、.id() 不稳定。
使用方式:遵循“症状→测量→定位→优化→复测”循环,最后一步不可省略。可用 Self._printChanges() 查看触发重求值的属性,也可在 LLDB 中执行 expression Self._printChanges(),发布前需移除。用 Xcode 的 Instruments SwiftUI 模板(Cmd+I)查看 View Body 与 View Properties;Xcode 26 的重设计 SwiftUI 仪器提供 Update Groups、Long View Body Updates 等泳道及 Cause & Effect Graph,用于回答“body 为何运行”。自定义测量可用 os_signpost。
适用场景:列表与网格滚动性能、视图标识与 diffing、@Observable 依赖粒度、环境值依赖、懒加载容器选择等。
限制:部分能力依赖系统与 Xcode 版本;资料未提供具体收费、价格或平台支持范围。修复后必须重新测量,不能仅凭代码差异判定问题已解决。