RACChannel介紹

RACChannel可以被看成是一個(gè)由兩個(gè)并行工作的signal組成的雙向連接。例如,當(dāng)連接一個(gè)view和一個(gè)model時(shí)有如下模型:
Model View
leadingTerminal ------> followingTerminal
leadingTerminal <------ followingTerminal

Model的初始值以及后面值的改變都會(huì)發(fā)送到leadingTerminal,由followingTerminal的訂閱者所接收。
同樣,不論何時(shí)view的值發(fā)生了改變,修改后的值會(huì)發(fā)送到followingTerminal,leadingTerminal中的model會(huì)收到。但是,view的初始值不回被收到。

RACChannelTo宏

RACChannelTo()作為右值表達(dá)式時(shí),它返回一個(gè)RACChannelTerminal,可以用來觀測(cè)特定屬性的改變。如果作為左值,那么右值必須是一個(gè)RACChannelTerminal值。兩個(gè)RACChannelTerminal互相訂閱,左邊的屬性值會(huì)立刻發(fā)送到右邊的信號(hào),然后接下來值的改變都會(huì)發(fā)給對(duì)方。

在使用兩個(gè)textField進(jìn)行雙向綁定測(cè)試時(shí)發(fā)現(xiàn)了這么一個(gè)現(xiàn)象:

self.valueTextField.rac_newTextChannel sends values when you type in the text field, but not when you change the text in the text field from code.

RACChannelTo(self.uiTextField, text) sends values when you change the text in the text field from code, but not when you type in the text field.


RACKVOChannel繼承RACChannel,通過下面方法初始化:
``` - (id)initWithTarget:(NSObject *)target keyPath:(NSString *)keyPath nilValue:(id)nilValue;```
當(dāng)前key path的值以及后續(xù)的KVO通知都是發(fā)送給channel的following terminal的訂閱者。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,564評(píng)論 19 139
  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 11,109評(píng)論 0 23
  • 如果你有六個(gè)蘋果,請(qǐng)不要都吃掉,因?yàn)檫@樣你只吃到一種蘋果味道。若把其中五個(gè)分給別人,你將獲得其他五個(gè)人的友情和好感...
    風(fēng)兩般的男人閱讀 239評(píng)論 2 1

友情鏈接更多精彩內(nèi)容