JHHK

欢迎来到我的个人网站
行者常至 为者常成

Combine 1

目录

介绍

一、是什么

Combine 是 Apple 在 iOS 13 / macOS 10.15 引入的一个 响应式编程框架。
提供了一个统一的的数据流处理模型, Publisher → Operator → Subscriber

二、解决了什么问题

KVO / NotificationCenter / Delegate
各种机制分散在不同 API,缺乏统一抽象,使用combine框架就可以不使用上述方案了。

UI 与数据绑定
数据变化时自动更新 UI

回调地狱(callback hell)
异步操作嵌套多层回调,层层嵌套,难以维护。
比如一个请求依赖另一个请求时,会有两层嵌套。

异步任务的组合
比如要同时发起两个网络请求,等两个都完成后再处理。

三、核心原理是什么

xy: combine 是一个 发布-订阅 模式的 流模型,数据从publisher 流向 operator 最后到达 subscriber,publisher作为数据源,operator对数据进行过滤或转换,subscriber对数据进行消费

Combine 的核心思想是 响应式流模型(Reactive Streams),用“发布-订阅”模式(Publisher-Subscriber Pattern)。

原理关键点:

Publisher (发布者)
定义了可以异步发出的一系列值(包括正常值、完成事件、错误)。
类似一个“数据源”。

Operator (操作符)
连接 Publisher 和 Subscriber。
通过链式调用,组合/转换数据流。

Subscriber (订阅者)
订阅后才会触发数据流。
负责接收 Publisher 发出的值和完成/错误事件。

背压机制 (Backpressure)
Subscriber 可以请求数据的数量,避免 Publisher 过快产生数据导致资源耗尽。

基于 Swift 泛型 + 协议
Publisher 和 Subscriber 都是协议。
Publisher 有 Output 和 Failure 两个关联类型,用于强类型约束。


行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.