W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
當你隨時都想知道某一個值的改變時(不管是next、error或者completion),你就會訂閱流——一種最常見的signal。使用信號通常都會有副作用,比如下面這個例子。
我們添加一個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)建并運行應用程序,在textField上輸入一些內(nèi)容。每一次每一個新的值輸入到textField中,這個Next value
就會下發(fā)到管道中,然后我們的訂閱塊就會被執(zhí)行。
有趣的是,這個特殊的信號不會發(fā)送錯誤值,僅僅在釋放的時候發(fā)送一個完成值,所以這兩個訂閱塊通常不會被調(diào)用。我們可以使用RACSignal上的一個簡便的方法subsribeNext:
來簡化我們的代碼:
[self.textField.rac_textSignal subscribeNext:^(id x){
NSLog(@"New Value: %@", x);
}];
看吧,少了很多代碼!
當你訂閱一個信號時,實際上你創(chuàng)建了一個“訂閱者”,訂閱者就好比通道最下方的一個盆,只有放好了盆,通道里面的值才能被接住,通道才能放心的打開。它是自動保留的,并同時保留她訂閱的信號,你也可以手動配置訂閱者,但這不是一種典型的行為。下一章我們將會學習,當視圖復用的時候(像CollectionViewCells 或TableViewCells),如何去有效地配置信號。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: