上篇博客我們詳細(xì)的聊了ReactiveSwift源碼中的Bag容器,詳情請參見《ReactiveSwift源碼解析之Bag容器》。本篇博客我們就來聊一下信號量,也就是Signal的的幾種狀態(tài)以及Signal的基本實(shí)現(xiàn)。當(dāng)然本篇博客所解析的源碼會用到上篇博客介紹的Bag容器。本篇博客我們先通過一個示例來看一下Signal是如何工作的,具體說來就是Signal是如何與Observer關(guān)聯(lián)的,來聊一下Observer是如何觀察和Signal發(fā)出的信號的。
之前我們也詳細(xì)的聊過Observer和Event相關(guān)的東西,詳情請參見《ReactiveSwift源碼解析之Event與Observer》。本篇博客我們先通過一個實(shí)例來看一下Signal和Observer的關(guān)系,然后在看一下Signal中的幾種狀態(tài),最后看一下Signal是如何給Observer發(fā)送事件(通知)的。
在聊Signal之前,我們要搞清楚,Signal與Observer的關(guān)系是一對多的關(guān)系,也就是說Signal是廣播的形式往Observer發(fā)事件的。這也就是典型的“觀察者模式”。
一、Signal的簡單使用示例
接下來我們先來看一段Signal的使用示例,雖然Single類中有一些創(chuàng)建Signal對象的便利方法,但是下方Demo中我們采用最原始的Signal創(chuàng)建方式,也就是直接調(diào)用Signal的構(gòu)造器。下方的是對該代碼段的介紹:
首先我們創(chuàng)建了一個Observer的對象myObserver, 主要是用來給Signal綁定的觀察者來發(fā)送事件的。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26