SuperAPI AI 工具集

swift

编程与开发

查看项目

更新于 10-16 09:31

技能介绍

用途:在编写或审查 Swift 代码时,建立强 API 边界、可预测的线程模型和惯用的 Apple 平台集成。若代码属于 Nitro Module,可与 build-nitro-modules 配合处理生成规格、Promise 映射和 HybridObject 约束。

主要能力:以类型表达状态而非可空字段的组合,可用协议加结构体/类,或用带关联值的枚举;只对真实领域缺失使用可选值。并发方面,一个功能只选 Swift concurrency 或 DispatchQueue 其一,避免交错。快速、确定、本地的同步工作保持同步,不为简单值构造引入 Task、DispatchQueue 或 Promise。仅当整个操作能干净地用 Swift 并发表达时,才用 async/await、Task 和 actor;当 Apple API、委托、回调、C++ 桥、JS 运行时或 Nitro 线程边界本身基于队列,或重原生工作不应阻塞调用者时,使用私有的串行 DispatchQueue。仅在平台 API 要求主线程时用 DispatchQueue.main。

使用方式:属性只用于廉价、可立即安全读写的观察状态,不把线程跳转、硬件或会话查询、锁等待、权限检查、分配或可失败原生操作藏在属性后;跨队列一次性读取应暴露为异步 getter,Nitro 中用 Promise<T>,通常是 Promise.parallel(queue)。队列绑定工作用 DispatchQueue.async 或 Promise 方法,禁止 DispatchQueue.sync。锁是最后手段,先识别共享可变值及并发访问者。

风格与限制:类默认 final;优先 Swift 原生类型;用 guard 尽早校验并抛出具体错误。一个文件一个顶层实现类型,扩展、委托、框架适配、转换器、辅助状态拆分为单独命名文件(如 Type+operation.swift),不要在 Hybrid* 实现文件或工厂文件中放扩展或辅助类型。约 300 行仅在一类型一文件且工厂无辅助规则满足后才是审查信号。转换放在元素类型而非数组或宽泛接收者(Int、String、CGPoint 等)上,除非转换确实关于该类型。

Nitro 备注:基于队列的工作用 Promise.parallel(queue),端到端包装 async/await 用 Promise.async,避免手动创建 Promise。不要用 asyncAfter、sleep、计时器或重复调用修复竞态,应修正所有者队列、生命周期状态或完成回调。其他细节与限制暂未提供。