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

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

 

一、ContiguousArray

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

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

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式