SuperAPI AI 工具集

appkit-interop

编程与开发

查看项目

更新于 10-15 21:36

技能介绍

用途:当 SwiftUI 接近但不足以实现原生 macOS 行为时,使用该技能进行窄范围 AppKit 桥接。SwiftUI 通常保持为数据真源,AppKit 只处理命令式边界。

桥接选择:优先纯 SwiftUI(场景、工具栏、命令、检查器、标准控件已能满足时);需要特定 AppKit 视图且生命周期简单时用 NSViewRepresentable;需要控制器生命周期、委托或呈现协调时用 NSViewControllerRepresentable;需要 NSWindow、响应链、菜单校验、面板或应用级行为时使用直接的 AppKit 窗口/应用钩子。

工作流:先精确命名能力缺口(窗口行为、文本系统行为、菜单校验、拖放、文件打开/保存面板、第一响应者控制),再选择能解决问题的最小边界,避免把整个界面移植到 AppKit。所有权要明确:SwiftUI 拥有值状态、选择与可观察模型;AppKit 对象留在 representable、coordinator 或桥接对象内;向 SwiftUI 暴露窄接口(绑定可编辑状态、小回调、仅在必要时提供聚焦的桥接服务)。还要验证生命周期假设:SwiftUI 可能重建 representable,coordinator 只应保存委托与 target-action 胶水。

参考文件:references/representables.md(视图与视图控制器包装的选择及 coordinator 模式)、references/window-panels.md(窗口访问、工具窗口、打开/保存面板)、references/responder-menus.md(第一响应者、命令路由、菜单校验)、references/drag-drop-pasteboard.md(粘贴板、文件 URL、桌面拖放边界)、references/appkit-overview.md(AppKit 主题与符号地图)。

限制与护栏:不要在 SwiftUI 与 AppKit 之间重复真源;不要让 Coordinator 变成无结构堆放处;不要无强所有权理由全局长期保存 NSView 或 NSWindow;优先使用小巧且经过测试的桥接,而非用原始 AppKit 重写功能;能留在 swiftui-patterns 的模式就留在那里。输出时应给出:跨越的确切 SwiftUI 限制、推荐的最小桥接类型、SwiftUI 与 AppKit 的数据流边界、需关注的生命周期或校验风险。

价格、平台版本等细节暂未提供。