SuperAPI AI 工具集

axiom-swiftui-debugging-diag

测试与质量

查看项目

更新于 10-15 15:38

技能介绍

用途

该技能用于 SwiftUI 视图调试需要系统性调查的场景:在完成基础排查后问题仍然存在、出现间歇性 UI 问题(“heisenbug”)、需要追踪多个视图与模型之间的复杂依赖链、进行性能调查(视图更新过于频繁或耗时过长),以及排查预览崩溃或难以直接定位的失败原因。它的定位不是常规快速修复,而是诊断式排查。

主要能力

技能提供一套诊断决策树与五个诊断模式:

  • 决策树:区分“视图不更新”“视图更新过于频繁”“间歇性问题”“预览崩溃”等情形,并指向对应诊断模式。
  • 模式 D1:使用 Self._printChanges() 分析视图 body 为何运行,解释 @self changed、具体 @State 属性变化、环境值变化或完全无日志等输出含义。
  • 模式 D2:使用 Instruments(Xcode 26 及以上的 SwiftUI 模板)录制 trace,分析 Long View Body Updates 与 Cause & Effect Graph,定位昂贵视图与过宽的依赖。
  • 模式 D3:视图 identity 排查,检查条件分支中的视图、.id() 修饰符与 ForEach 标识符,处理 @State 意外重置、动画失效、输入框失焦等问题。
  • 模式 D4:环境依赖检查,通过搜索 .environment( 写入并结合 Instruments 判断频繁变化的环境值与过多的环境读取者。
  • 模式 D5:Xcode 26 预览诊断,使用 Preview Diagnostics 按钮、崩溃日志与最小预览隔离问题。

技能还明确列出禁止行为,例如随机尝试属性包装器、用 .id(UUID()) 强制刷新掩盖根因、把间歇性问题当作偶然,以及在未理解原因的情况下交付。

使用方式

先建立基线环境:确认 xcodebuild -version 满足 Xcode 26+(SwiftUI Instrument 需要)、以 Release 配置构建、在排查预览问题时清理 DerivedData。随后按决策树进入对应诊断模式,使用 Self._printChanges() 做临时插桩(验证后必须移除,不得进入生产),或使用 Instruments 录制并分析 Cause & Effect Graph。

对于生产紧急情况,技能给出 90 分钟的分阶段协议:复现、用模式 D2 诊断、应用针对性修复、验证、带证据部署,并强调在用户报告真实存在时不要以“本地无法复现”或“大概是系统 bug”为由跳过排查。

适用场景

适用于 iOS/macOS 上的 SwiftUI 视图更新异常、间歇性 UI 问题、复杂数据流追踪、性能问题定位与预览崩溃排查,尤其是基础调试技能已应用但问题未解决的情况。

限制

Instruments 工作流要求 Xcode 26+ 与对应设备系统版本,且需 Release 模式构建才能获得可靠的性能数据,因此诊断存在环境前提。技能中的时间成本为流程预估,并非效果承诺。关于定价、收费、平台支持范围等事实暂未提供。