SuperAPI AI 工具集

combine-reactive

前端与建站

查看项目

更新于 10-15 23:44

技能介绍

用途:为 iOS/tvOS 开发中的 Combine 使用提供判断依据,而非语法教学。核心是回答“何时该用 Combine、何时该用 async/await”,以及如何规避常见陷阱。

主要能力:

  1. Combine 与 async/await 的决策树:单次异步操作倾向 async/await;随时间产生的值流、UI 驱动事件(debounce、throttle)倾向 Combine;合并 2-3 个数据源可用 CombineLatest、Zip,数据源很多时考虑结构化并发(TaskGroup);已有 Combine 代码库则保持一致。
  2. Subject 选择:需要同步读取当前值用 CurrentValueSubject;纯事件用 PassthroughSubject;需要重放历史值需外部状态管理,Combine 无内置 ReplaySubject。
  3. 操作符链设计:转换用 map、compactMap、flatMap;过滤用 filter、removeDuplicates、first、dropFirst;时序用 debounce、throttle;错误处理用 catch、replaceError、retry(n);合并流用 zip、combineLatest、merge。

必要用法与限制:订阅必须存入 Set<AnyCancellable>,否则立即取消;sink 闭包用 [weak self] 避免循环引用;避免 assign(to:on:) 对类使用,可用 sink 或 assign(to: &$property);Subject 应私有并暴露为 AnyPublisher;多线程发送需串行化或用 receive(on:);UI 更新前需 receive(on: DispatchQueue.main);sink 需处理 receiveCompletion 的 failure。资料还给出 ViewModel 模式、Combine 转 async 桥接与事件总线示例。

适用场景:已有 Combine 代码库的维护与重构、搜索防抖、事件总线、多源合并等。限制:不适用于简单一次性异步调用;资料未提供安装命令、收费或平台支持信息。