
理解并改进 SwiftUI 性能摘要背景Apple 关于使用 Instruments 诊断 SwiftUI 性能、并应用设计模式以减少长时间或高频更新的指导。核心概念SwiftUI 是声明式的视图更新由状态、环境和可观察数据依赖驱动。视图 body 必须快速计算以赶上帧截止时间缓慢或频繁的更新会导致卡顿。Instruments 是查找长时间更新和过度更新频率的主要工具。Instruments 工作流程通过 Product Profile 进行性能分析。选择 SwiftUI 模板并录制。执行目标交互。停止录制并检查 SwiftUI 轨道和 Time Profiler。SwiftUI 时间线泳道Update GroupsSwiftUI 计算更新所花时间的概览。Long View Body Updates橙色 500us红色 1000us。Long Platform View UpdatesSwiftUI 中托管的 AppKit/UIKit 视图。Other Long Updates几何/文本/布局以及其他 SwiftUI 工作。Hitches错过帧截止时间、UI 未能及时就绪的丢帧。诊断过长的视图 body 更新展开 SwiftUI 轨道检查模块特定的子轨道。设置检查范围Inspection Range并与 Time Profiler 关联。使用调用树或火焰图识别开销大的帧。重复更新以收集足够的采样用于分析。过滤到特定更新Show Calls Made byMySwiftUIView.body。诊断频繁更新使用 Update Groups 查找没有长时间更新但持续活跃的组。在组上设置检查范围并分析更新次数。使用 Cause 图“Show Causes”查看触发更新的原因。将原因与预期的数据流进行比较优先处理频率最高的原因。修复模式将开销大的工作移出body并缓存结果。使用Observable()宏将依赖范围限定到实际读取的属性。避免将更新扩散到许多视图的宽泛依赖。减少布局变动将依赖状态的子树与布局读取者隔离。避免存储捕获父状态的闭包预计算子视图。通过阈值对频繁更新如几何变化进行门控。验证在改动后重新录制确认更新次数减少、卡顿减少。