SuperAPI AI 工具集

swiftui engineer

编程与开发

查看项目

更新于 10-16 04:24

技能介绍

SwiftUI Engineer 是一个面向 macOS 的 SwiftUI 开发辅助技能,覆盖从架构、代码审查、调试到现代化迁移的完整开发周期,重点聚焦 macOS 26 Tahoe 的模式与最佳实践。

用途 该技能用于在 macOS 平台上构建、审查、调试和现代化 SwiftUI 应用。它适用于需要生成生产级 SwiftUI 代码、检查代码质量、排查视图问题或从 AppKit 迁移的场景。

主要能力 技能提供四种工作模式:

  1. 架构模式:用于构建 SwiftUI 视图、设计组件、规划应用结构。可生成生产级 SwiftUI 代码、应用适合 macOS 的模式、创建可复用组件、为可测试性做结构设计,并正确使用现代属性包装器。
  2. 审查模式:用于检查代码质量、查找反模式、验证模式。可扫描 SwiftUI 反模式、验证状态管理正确性、检查 async/await 模式、验证线程安全(@MainActor)、评估架构与关注点分离。
  3. 调试模式:用于调试崩溃、性能问题、渲染问题和异常行为。可诊断视图更新问题、识别状态管理问题、解决引用循环与内存泄漏、发现性能瓶颈、调试线程与异步问题。
  4. 现代化模式:用于从 AppKit 迁移、更新已弃用 API、规划升级。可将 AppKit 模式映射到 SwiftUI、处理 API 弃用、解释破坏性变更、提供迁移策略、在过渡期间保留功能。

使用方式 技能提供常见模式速查。状态管理方面:所有者使用 @StateObject private var viewModel = ViewModel(),子视图使用 @ObservedObject var viewModel: ViewModel,ViewModel 使用 @MainActor class ViewModel: ObservableObject。原因是只有所有者创建实例,子视图观察共享实例,@MainActor 确保 UI 更新线程安全。导航方面:macOS 使用 NavigationSplitView(而非已弃用的 NavigationView)。异步方面:在视图中使用 .task(),而不是在 .onAppear 中使用 Task {},因为 .task 会在视图消失时自动取消。macOS 26 Tahoe 的 Liquid Glass:使用 .background(.ultraThinMaterial) 实现自适应背景。

每种模式的工作流程: 架构模式:理解需求、选择合适模式(MVVM、组件层级)、应用 macOS 标准(8pt 网格间距、NavigationSplitView)、包含无障碍标签、解释设计决策。 审查模式:检查属性包装器正确性、验证 @StateObject 归属模式、验证线程安全(@MainActor 使用)、检查 async/await 模式、识别反模式与改进点、解释每个问题的重要性。 调试模式:收集信息(症状、复现步骤、错误信息)、基于症状形成假设、引导系统化调试、识别根因、提供针对性修复、解释未来预防方法。 现代化模式:评估当前架构、规划增量迁移(不要一次性重写全部)、映射 AppKit 到 SwiftUI 等价物、处理 API 弃用、保留功能、提供迁移清单。

关键原则 线程安全:在带有 @Published 属性的 ViewModel 上使用 @MainActor。 归属:每个数据源一个 @StateObject,通过 @ObservedObject 传递。 异步:使用 .task() 处理视图生命周期(而非 .onAppear 中的 Task {})。 macOS:使用 NavigationSplitView、正确的菜单、键盘管理。 状态:保持状态靠近使用位置,仅在共享时提升。

常见反模式 状态放错位置:在非视图类中使用 @State。 多个 @StateObject 实例:每个子视图各自拥有而非共享。 缺少 @MainActor:从后台线程发布。 在 .onAppear 中使用 Task:应使用 .task() 进行生命周期管理。 视图内包含业务逻辑:在 body 中进行网络调用或复杂数据处理。 对大列表使用 LazyVStack:不会回收,应使用 List。

适用场景 需要构建新视图时使用架构模式;检查代码是否良好时使用审查模式;应用崩溃、修复渲染问题、查找性能问题时使用调试模式;更新到新 Swift 版本时使用审查模式;从 AppKit 迁移时使用现代化模式;修复反模式时使用审查模式;设计新组件时使用架构模式。

限制 该技能聚焦 macOS 平台,未提供其他平台的支持说明。详细示例、反模式、调试技巧和迁移策略需参考 REFERENCE.md。技能未提供收费、价格或具体平台兼容性信息。