Reactive Cocoa在訊息傳輸中的作用

2021-07-02 16:33:53 字數 1274 閱讀 4676

首先,是將viewcontroller和tableview分開的,tableview寫在了乙個單獨的cocoa touch class中。如圖1

然後在nhchatviewcontroller的-(void)viewdidload中,如圖2

其中,需要解釋的有:

1.紅線標註的messages其實就是指self.messages,這應該是racobserve(...)函式的引數寫作方式,如果寫為self.messages好像是不對的。

2.self.chatview.messagessignal中的chatview是nhchat.storyboard中針對tableview部分的乙個iboutlet,messagessignal是nhchatcontentview的乙個屬性。

3.racobserve(...)返回的是racsignal,而racsignal在某種程度上相當與是乙個封裝了messages的盒子(這個盒子封裝的東西的屬性取決於messages引數的型別),而這個盒子即是racsignal型

4.由圖2中注釋,因為整個plist中的值是不斷傳輸的,所以當messages發生變化時,就將變化後的值傳遞給nhchatcontentview中。

再者,在nhchatcontentview:uiview中,而uiview的標配即是-(void)wake等一系列函式,如圖3

1.buildtableview是乙個自定義函式,旨在構建tableview;

2.@ weakify(self);和@strongify(self)是防止形成引用環;

3.為什麼不對self.messagessignal直接使用subscribenext解析呢?因為這與程式執行有關,最初得到的值為空,而不能使得訊息顯示;雖然racobserve(self, messagessignal)得到的是封裝了兩次的nsarray,但是switchtolatest能解決。。。。。

這樣做的好處是:在實際訊息中,訊息的message並不一定來自plist,它也可以來自資料庫或者伺服器端等,而以reactive cocoa這種方式實現,使得我們不用去關心訊息的**。

--20150518學習記錄

ReactiveCocoa常見巨集

1 rac target,keypath,nil value 用於給某個物件的某個屬性繫結。只要文字框文字改變,就會修改label的文字 rac self.labelview,text textfield.rac textsignal reactivecocoa bindings rac self,...

ReactiveCocoa個人記錄

self.mybutton rac signalforcontrolevents uicontroleventtouchupinside subscribenext id x 複製 self.mytextfield rac textsignal subscribenext id x distinct...

ReactiveCocoa基本使用

reactiviecocoa的底層就不說明了。這裡就簡單介紹它的幾個基本使用場景。cocoapods匯入reactivecocoa5.0以上版本注意事項 1 如果你使用的是純swift工程,podfile檔案描述如下 use frameworks target 工程名稱 do pod reactiv...