W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
本篇我們介紹ReactiveCocoa的另一種類型的流,即信號。信號是push-driven
的,這點與序列流正好相反,新值雖然能夠通過管道進行發(fā)布卻不能像pull-driven
一樣在管道中獲取,它們所抽象出來的數據只會在以后的某個時間進行傳送。
這里需要理解兩個概念: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)建信號的時候,信號不會被立即賦值,之后才會被賦值(舉個栗子:網絡請求回來的結果或者是任意的用戶輸入的結果)
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)建信號的同時序列中的值就會被確定下來,我們可以從流中一個個地查詢值。
信號發(fā)送三種類型的值:Next Values
代表了下一個發(fā)送到管道內的值。Error Value
代表signal
無法成功完成,一般很少見,我們會在下一章學習怎么使用她們。Completion Values
代表signal
成功完成,我們也會在下一章來學習。這里要注意的是:
一個事情響應中,一個
signal
(信號)發(fā)送了一個Error value
或者一個Completion Value
后,就不會再發(fā)送任何其他的value
. 錯誤或者成功將只會發(fā)送其中一個,絕不會有兩個同時發(fā)送的情況!
信號是ReactiveCocoa的核心組件之一。ReactiveCocoa為UIKit的每一個控件內置了一套信號選擇器。例如,UITextField就有一個rac_textSignal
,UITextField中每一次按鍵的響應都會通過它發(fā)送出去。下一章我們會學習如何使用信號來執(zhí)行任務。
信號也可以被鏈接(鏈式調用)和轉化。通過映射或者過濾一個流得到的新的流也可以隨后被映射、被過濾,進行所有你能想到的各種操作。在下一章中我們會更多的介紹這方面的內容。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: