今天博客我接著上篇博客的內(nèi)容來(lái),上篇博客我們?cè)敿?xì)的看了ReactiveSwift中的Observer已經(jīng)Event的代碼實(shí)現(xiàn)。接下來(lái)我們來(lái)看一下ReactiveSwift中的結(jié)構(gòu)體Bag的實(shí)現(xiàn)。Bag:袋子,顧明思議,就是用來(lái)裝東西的,我們暫且將Bag稱之為容器。在ReactiveSwift中的Bag主要是用來(lái)存儲(chǔ)Signal對(duì)象的,我們?cè)诤笃诮榻BReactiveSwift源碼時(shí)會(huì)陸陸續(xù)續(xù)的看到Bag的身影。

因?yàn)锽ag這個(gè)結(jié)構(gòu)體在ReactiveSwift中比較獨(dú)立,所以我們本篇博客就來(lái)聊一下Bag的具體實(shí)現(xiàn)。本篇博客我們會(huì)詳細(xì)的介紹Bag的代碼實(shí)現(xiàn),并從Bag代碼實(shí)現(xiàn)中看一下Swift語(yǔ)言本身的東西,并給出Bag的測(cè)試用例。當(dāng)然,本篇博客我們還會(huì)涉及到“迭代器模式”,關(guān)于“迭代器模式”更詳細(xì)的信息,請(qǐng)移步于之前發(fā)布的關(guān)于設(shè)計(jì)模式的博客《設(shè)計(jì)模式(十):從電影院中認(rèn)識(shí)"迭代器模式"(Iterator Pattern)》。

 

一、ContiguousArray

在博客的第一部分我們先來(lái)看一下ContiguousArray的相關(guān)內(nèi)容。因?yàn)榻Y(jié)構(gòu)體Bag就是在ContiguousArray的基礎(chǔ)上進(jìn)行封裝的,也就是說(shuō)袋子中的元素最終是存放在ContiguousArray中的。在Swift中ContiguousArray與Array的用法差不多,下方是官方對(duì)ContiguousArray的介紹。

從下方我們可以清楚的知道ContiguousArray、Array還有ArraySlice的大部分屬性和方法是共用的。但是在存儲(chǔ)Class或者@objc 協(xié)議時(shí),使用ContiguousArray效率會(huì)更高一些。但是ContiguousArray不能和Objective-C的NSArray進(jìn)行橋接,并且不能將ContiguousArray傳入到Objective-C的API中。

網(wǎng)友評(píng)論