W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
當(dāng)你隨時(shí)都想知道某一個(gè)值的改變時(shí)(不管是next、error或者completion),你就會(huì)訂閱流——一種最常見的signal。使用信號(hào)通常都會(huì)有副作用,比如下面這個(gè)例子。
我們添加一個(gè)textfield控件到viewController's View上,這里我使用storyboard來做,你怎么做隨你喜好。
在ViewDidLoad中添加如下代碼,訂閱textfield的rac_textSignal。
[self.textField.rac_textSignal subscribeNext:^(id x){
NSLog(@"New Value: %@",x);
} error:^(NSError * error){
NSLog(@"Error : %@", error);
} completed:^{
NSLog(@"Completed.");
}];
創(chuàng)建并運(yùn)行應(yīng)用程序,在textField上輸入一些內(nèi)容。每一次每一個(gè)新的值輸入到textField中,這個(gè)Next value
就會(huì)下發(fā)到管道中,然后我們的訂閱塊就會(huì)被執(zhí)行。
有趣的是,這個(gè)特殊的信號(hào)不會(huì)發(fā)送錯(cuò)誤值,僅僅在釋放的時(shí)候發(fā)送一個(gè)完成值,所以這兩個(gè)訂閱塊通常不會(huì)被調(diào)用。我們可以使用RACSignal上的一個(gè)簡(jiǎn)便的方法subsribeNext:
來簡(jiǎn)化我們的代碼:
[self.textField.rac_textSignal subscribeNext:^(id x){
NSLog(@"New Value: %@", x);
}];
看吧,少了很多代碼!
當(dāng)你訂閱一個(gè)信號(hào)時(shí),實(shí)際上你創(chuàng)建了一個(gè)“訂閱者”,訂閱者就好比通道最下方的一個(gè)盆,只有放好了盆,通道里面的值才能被接住,通道才能放心的打開。它是自動(dòng)保留的,并同時(shí)保留她訂閱的信號(hào),你也可以手動(dòng)配置訂閱者,但這不是一種典型的行為。下一章我們將會(huì)學(xué)習(xí),當(dāng)視圖復(fù)用的時(shí)候(像CollectionViewCells 或TableViewCells),如何去有效地配置信號(hào)。
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)系方式:
更多建議: