版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2019.09.16 星期一 |
前言
最近蘋(píng)果多了一個(gè)框架
Combine
,這里我們就一起來(lái)看一下這個(gè)框架。
Overview
通過(guò)組合事件處理運(yùn)算符來(lái)自定義異步事件的處理。
首先看下框架概覽
Combine
框架提供了一個(gè)聲明性的Swift API
,用于隨時(shí)間處理值。這些值可以表示多種異步事件。Combine
合聲明publishers
以公開(kāi)可隨時(shí)間變化的值,以及subscribers
從publishers
接收這些值。
-
Publisher協(xié)議聲明了一種可以隨時(shí)間傳遞一系列值的類型。
publishers
可讓運(yùn)營(yíng)商根據(jù)從上游發(fā)布商處收到的值采取行動(dòng)并重新發(fā)布。 - 在
publishers
鏈的末尾,Subscriber在接收元素時(shí)對(duì)其進(jìn)行操作。publishers
僅在subscribers
明確請(qǐng)求時(shí)才會(huì)發(fā)出值。這使您的subscribers
代碼能夠控制從其連接的publishers
接收事件的速度。
一些Foundation
類型通過(guò)publishers
公開(kāi)其功能,包括Timer,NotificationCenter和URLSession。 Combine
還為符合Key-Value Observing
的任何屬性提供內(nèi)置publishers
。
您可以組合多個(gè)publishers
的輸出并協(xié)調(diào)他們的交互。例如,您可以從文本字段的publisher
訂閱更新,并使用該文本執(zhí)行URL請(qǐng)求。然后,您可以使用其他publishers
處理回復(fù)并使用它們來(lái)更新您的應(yīng)用。
通過(guò)采用Combine
,您可以通過(guò)集中事件處理代碼并消除麻煩的閉包和基于約定的回調(diào)等麻煩的技術(shù),使代碼更易于閱讀和維護(hù)。
Topics
1. Essentials
-
Receiving and Handling Events with Combine
- 從異步源自定義和接收事件。
2. Publishers
-
protocol
Publisher- 聲明類型可以隨時(shí)間傳輸一系列值。
-
enum
Publishers- 用作發(fā)布者的類型的命名空間。
-
struct
AnyPublisher- 類型擦除發(fā)布者。
-
protocol
ConnectablePublisher-
publisher
,提供連接和取消發(fā)布的明確方法。
-
-
struct
Published- 發(fā)布標(biāo)有屬性的屬性的類型。
-
protocol
Cancellable- 指示活動(dòng)或操作支持取消的協(xié)議。
-
class
AnyCancellable- 一種類型擦除可取消對(duì)象,在取消時(shí)執(zhí)行提供的閉包。
3. Convenience Publishers
-
- 最終生成單個(gè)值然后完成或失敗的發(fā)布者。
-
- 發(fā)布者只向每個(gè)訂閱者發(fā)出一次輸出,然后完成。
-
- 在運(yùn)行提供的閉包之前等待訂閱的發(fā)布者,以便為新訂閱者創(chuàng)建發(fā)布者。
-
- 從不發(fā)布任何值的發(fā)布者,并可選擇立即完成。
-
- 發(fā)布者,它會(huì)立即以指定的錯(cuò)誤終止。
-
- 允許記錄一系列輸入和完成的發(fā)布者,以便稍后回放給每個(gè)訂閱者。
4. Subscribers
-
- 聲明可以從發(fā)布者接收輸入的類型的協(xié)議。
-
- 用作訂閱者的類型的命名空間。
-
- 類型擦除用戶。
-
- 表示訂戶與發(fā)布者的連接的協(xié)議。
-
- 與訂閱相關(guān)的符號(hào)的命名空間。
5. Subjects
-
- 向外部調(diào)用者公開(kāi)方法以發(fā)布元素的發(fā)布者。
-
- 包含單個(gè)值的主題,并在值更改時(shí)發(fā)布新元素。
-
- 向下游訂戶廣播元素的主題。
6. Schedulers
-
- 定義何時(shí)以及如何執(zhí)行閉包的協(xié)議。
-
- 用于執(zhí)行同步動(dòng)作的調(diào)度程序。
-
protocol SchedulerTimeIntervalConvertible
- 一種協(xié)議,為調(diào)度程序提供相對(duì)時(shí)間的表達(dá)式。
7. Observable Objects
-
- 一種對(duì)象,其中發(fā)布者在對(duì)象發(fā)生更改之前發(fā)出。
-
class ObservableObjectPublisher
- 從可觀察對(duì)象發(fā)布更改的發(fā)布者。
8. Encoders and Decoders
-
- 一種定義編碼方法的類型。
-
- 定義解碼方法的類型。
9. Debugging Identifiers
-
protocol CustomCombineIdentifierConvertible
- 用于唯一標(biāo)識(shí)發(fā)布者流的協(xié)議。
-
- 用于標(biāo)識(shí)發(fā)布者流的唯一標(biāo)識(shí)符。
后記
本篇主要講述了Combine框架基本概覽,感興趣的給個(gè)贊或者關(guān)注~~~