W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
本篇我們介紹ReactiveCocoa的另一種類型的流,即信號(hào)。信號(hào)是push-driven
的,這點(diǎn)與序列流正好相反,新值雖然能夠通過管道進(jìn)行發(fā)布卻不能像pull-driven
一樣在管道中獲取,它們所抽象出來的數(shù)據(jù)只會(huì)在以后的某個(gè)時(shí)間進(jìn)行傳送。
這里需要理解兩個(gè)概念:pull-driven
和push-driven
.
Push-driven means that values for the signal are not defined at the moment of signal creation and may become available at a later time (for example, as a result from network request, or any user input).
Push-driven : 在創(chuàng)建信號(hào)的時(shí)候,信號(hào)不會(huì)被立即賦值,之后才會(huì)被賦值(舉個(gè)栗子:網(wǎng)絡(luò)請(qǐng)求回來的結(jié)果或者是任意的用戶輸入的結(jié)果)
Pull-driven means that values in the sequence are defined at the moment of signal creation and we can query values from the stream one-by-one.
Pull-driven : 在創(chuàng)建信號(hào)的同時(shí)序列中的值就會(huì)被確定下來,我們可以從流中一個(gè)個(gè)地查詢值。
信號(hào)發(fā)送三種類型的值:Next Values
代表了下一個(gè)發(fā)送到管道內(nèi)的值。Error Value
代表signal
無法成功完成,一般很少見,我們會(huì)在下一章學(xué)習(xí)怎么使用她們。Completion Values
代表signal
成功完成,我們也會(huì)在下一章來學(xué)習(xí)。這里要注意的是:
一個(gè)事情響應(yīng)中,一個(gè)
signal
(信號(hào))發(fā)送了一個(gè)Error value
或者一個(gè)Completion Value
后,就不會(huì)再發(fā)送任何其他的value
. 錯(cuò)誤或者成功將只會(huì)發(fā)送其中一個(gè),絕不會(huì)有兩個(gè)同時(shí)發(fā)送的情況!
信號(hào)是ReactiveCocoa的核心組件之一。ReactiveCocoa為UIKit的每一個(gè)控件內(nèi)置了一套信號(hào)選擇器。例如,UITextField就有一個(gè)rac_textSignal
,UITextField中每一次按鍵的響應(yīng)都會(huì)通過它發(fā)送出去。下一章我們會(huì)學(xué)習(xí)如何使用信號(hào)來執(zhí)行任務(wù)。
信號(hào)也可以被鏈接(鏈?zhǔn)秸{(diào)用)和轉(zhuǎn)化。通過映射或者過濾一個(gè)流得到的新的流也可以隨后被映射、被過濾,進(jìn)行所有你能想到的各種操作。在下一章中我們會(huì)更多的介紹這方面的內(nèi)容。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: