用途:该技能面向 macOS 混合开发,指导开发者在既有 AppKit 应用中渐进式引入 SwiftUI,或在 SwiftUI 中使用 AppKit 能力,并管理两套框架间的共享状态。
主要能力:涵盖三个方向。NSViewRepresentable 用于把 AppKit 视图包装进 SwiftUI,包括协议完整实现、Coordinator 模式和用 sizeThatFits 做布局集成;Hosting Controllers 用于把 SwiftUI 视图嵌入 AppKit 容器,涉及 NSHostingView 与 NSHostingController、窗口管理和渐进式采用;状态管理涉及 @Observable 桥接、Combine 管道与基于通知的通信。
选择建议:SwiftUI 缺少原生等价物(如 NSTextView 富文本、NSOpenGLView)、需要精细控制视图生命周期或性能关键视图(如 10 万行以上的 NSTableView)时用 NSViewRepresentable;渐进式采用 SwiftUI、布局或动画更简洁、在 AppKit 外壳里构建新功能时用 NSHostingView/Controller;新项目面向 macOS 14+、功能有完整 SwiftUI API 覆盖且无需 AppKit 特定行为时直接用纯 SwiftUI。
使用方式:按需加载 NSViewRepresentable、Hosting Controllers、State Management 三个模块参考文档;审查时先判断桥接方向、最低部署目标与性能/生命周期约束,再按模块指南给出结构化反馈,每条问题包含问题、影响、修复代码和对应模式。
限制与常见陷阱:dismantleNSView 留空会导致 KVO 观察和 NotificationCenter 观察者泄漏;在 makeNSView 中直接设置 frame 会被 SwiftUI 布局系统忽略,应改用 sizeThatFits 或 intrinsicContentSize;每次 update 都新建 Coordinator 会造成生命周期错配,应使用 context.coordinator;需注意 coordinator 中的循环引用。使用 API 时应标注最低 macOS 版本,并优先使用 @Observable(macOS 14+)。具体命令与安装方式暂未提供。