Publisher(发布者):
Combine 为我们内置了一些 Publisher 以满足我们开发的需要。下面列出了一些常用的 Publisher 以供参考:
SwiftUI Combine常用的Publisher(属性包装器):
●ObservableObject:配合 SwiftUI 一起使用(生命周期手动管理),符合 ObservableObject 协议的对象可以提供 Publisher。
●StateObject:配合 SwiftUI 一起使用(生命周期由View管理),符合 ObservableObject 协议的对象可以提供 Publisher。
●@Published:属性包装器,用来把一个属性数据转变为 Publisher。
具体使用方法和例子,可参考另一篇 SwiftUI - 属性包装器记录
Swift Combine常用的Publisher:
Just:只提供一个数据然后终止的 Publisher,失败类型为 Never。
Future:异步操作的 Publisher,用一个闭包初始化,该闭包最终解析为单个输出数据或失败。
Sequence:发布给定数据序列的 Publisher 。
Swift Combine其他的Publisher:
● Empty:一个从不发布任何数据的 Publisher ,并且可以选择立即完成。
● Fail:立即使用指定错误终止的 Publisher 。
● Optional:如果可选数据具有数据,则 Publisher 仅向每个 Subscriber 发布一次可选数据。
● Deferred:在运行提供的闭包之前等待订阅的 Publisher ,以便为新的 Subscriber 创建 Publisher 。
● Record:允许记录一系列 Input 和 Completion,供每个 Subscriber 回放。
● Share:实现者为类的 Publisher ,其行为与其上游 Publisher 相同。
● Multicast:多播 Publisher ,当有多个 Subscriber,但希望上游 Publisher 的每个数据仅调用一次 receive (_:) 时使用。
Subject(一种特殊的Publisher),继承于Publisher,可以手动发送数据
combine 内置的subject:
● PassthroughSubject:通过 send 发送数据或事件给下游的 Publisher 或 Subscriber, 不会对接收到的数据进行保留。
● CurrentValueSubject:会保留一个最后的数据,并在被订阅时将这个数据发送给下游的 Publisher 或 Subscriber。
Subscriber(订阅者):
Combine 内置的订阅者:
onChange(onReceive):
SwiftUI 里的 View的一个订阅方法,订阅发布者发送的消息