Combine详解
- Combine详解
Combine框架提供了一个声明性的Swift API,用于随时间处理值。这些值可以表示多种异步事件。 Combine合声明publishers以公开可随时间变化的值,以及subscribers从publishers接收这些值。
Publisher协议声明了一种可以随时间传递一系列值的类型。publishers可让运营商根据从上游发布商处收到的值采取行动并重新发布。
在publishers链的末尾,Subscriber在接收元素时对其进行操作。
publishers仅在subscribers明确请求时才会发出值。这使您的subscribers代码能够控制从其连接的publishers接收事件的速度。
一些Foundation类型通过publishers公开其功能,包括Timer,NotificationCenter和URLSession。
Combine还为符合Key-Value Observing的任何属性提供内置publishers。
可以组合多个publishers的输出并协调他们的交互。例如,您可以从文本字段的publisher订阅更新,并使用该文本执行URL请求。然后,可以使用其他publishers处理回复并使用它们来更新应用。
通过采用Combine,可以通过集中事件处理代码并消除麻烦的闭包和基于约定的回调等麻烦的技术,使代码更易于阅读和维护。
- Essentials
Receiving and Handling Events with Combine 从异步源自定义和接收事件。
- Publishers
protocol Publisher
声明类型可以随时间传输一系列值。
enum Publishers
用作发布者的类型的命名空间。
struct AnyPublisher
类型擦除发布者。
protocol ConnectablePublisher
publisher,提供连接和取消发布的明确方法。
struct Published
发布标有属性的属性的类型。
protocol Cancellable
指示活动或操作支持取消的协议。
class AnyCancellable
一种类型擦除可取消对象,在取消时执行提供的闭包。
- Convenience Publishers
class Future
最终生成单个值然后完成或失败的发布者。
struct Just
发布者只向每个订阅者发出一次输出,然后完成。 struct Deferred
在运行提供的闭包之前等待订阅的发布者,以便为新订阅者创建发布者。 struct Empty
从不发布任何值的发布者,并可选择立即完成。 struct Fail
发布者,它会立即以指定的错误终止。 struct Record
允许记录一系列输入和完成的发布者,以便稍后回放给每个订阅者。
- Subscribers
protocol Subscriber
声明可以从发布者接收输入的类型的协议。 enum Subscribers
用作订阅者的类型的命名空间。 struct AnySubscriber
类型擦除用户。 protocol Subscription
表示订户与发布者的连接的协议。 enum Subscriptions
与订阅相关的符号的命名空间。
- Subjects
protocol Subject
向外部调用者公开方法以发布元素的发布者。 class CurrentValueSubject
包含单个值的主题,并在值更改时发布新元素。 class PassthroughSubject
向下游订户广播元素的主题。
- Schedulers
protocol Scheduler
定义何时以及如何执行闭包的协议。 struct ImmediateScheduler
用于执行同步动作的调度程序。 protocol SchedulerTimeIntervalConvertible
一种协议,为调度程序提供相对时间的表达式。
- Observable Objects
protocol ObservableObject
一种对象,其中发布者在对象发生更改之前发出。 class ObservableObjectPublisher
从可观察对象发布更改的发布者。
- Encoders and Decoders
protocol TopLevelEncoder
一种定义编码方法的类型。 protocol TopLevelDecoder
定义解码方法的类型。
- Debugging Identifiers
protocol CustomCombineIdentifierConvertible
用于唯一标识发布者流的协议。 struct CombineIdentifier
用于标识发布者流的唯一标识符。