- 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
用於標識發布者流的唯一標識符。