上篇博客我們?cè)敿?xì)的聊了ReactiveSwift源碼中的Bag容器,詳情請(qǐng)參見(jiàn)《ReactiveSwift源碼解析之Bag容器》。本篇博客我們就來(lái)聊一下信號(hào)量,也就是Signal的的幾種狀態(tài)以及Signal的基本實(shí)現(xiàn)。當(dāng)然本篇博客所解析的源碼會(huì)用到上篇博客介紹的Bag容器。本篇博客我們先通過(guò)一個(gè)示例來(lái)看一下Signal是如何工作的,具體說(shuō)來(lái)就是Signal是如何與Observer關(guān)聯(lián)的,來(lái)聊一下Observer是如何觀察和Signal發(fā)出的信號(hào)的。
之前我們也詳細(xì)的聊過(guò)Observer和Event相關(guān)的東西,詳情請(qǐng)參見(jiàn)《ReactiveSwift源碼解析之Event與Observer》。本篇博客我們先通過(guò)一個(gè)實(shí)例來(lái)看一下Signal和Observer的關(guān)系,然后在看一下Signal中的幾種狀態(tài),最后看一下Signal是如何給Observer發(fā)送事件(通知)的。
在聊Signal之前,我們要搞清楚,Signal與Observer的關(guān)系是一對(duì)多的關(guān)系,也就是說(shuō)Signal是廣播的形式往Observer發(fā)事件的。這也就是典型的“觀察者模式”。
一、Signal的簡(jiǎn)單使用示例
接下來(lái)我們先來(lái)看一段Signal的使用示例,雖然Single類中有一些創(chuàng)建Signal對(duì)象的便利方法,但是下方Demo中我們采用最原始的Signal創(chuàng)建方式,也就是直接調(diào)用Signal的構(gòu)造器。下方的是對(duì)該代碼段的介紹:
首先我們創(chuàng)建了一個(gè)Observer的對(duì)象myObserver, 主要是用來(lái)給Signal綁定的觀察者來(lái)發(fā)送事件的。
網(wǎng)友評(píng)論