[iOS][RAC]--RACSignal類發(fā)送信號過程的低層實現(xiàn)

一、簡單的實現(xiàn)步驟
套路:1、創(chuàng)建信號(冷信號!)
2、訂閱信號(熱信號!!)
3、發(fā)送數(shù)據subscriber它來發(fā)送

- (void)viewDidLoad {
    [super viewDidLoad];
    //RACSignal: 信號類,當我們有數(shù)據產生,創(chuàng)建一個信號!
    //1.創(chuàng)建信號(冷信號!)
    //didSubscribe調用:只要一個信號被訂閱就會調用!!
    //didSubscribe作用:利用subscriber發(fā)送數(shù)據!!
    RACSignal * signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        //3.發(fā)送數(shù)據subscriber它來發(fā)送
        [subscriber sendNext:@"發(fā)送了!??!"];
        
        return nil;
    }];
    
    //2.訂閱信號(熱信號!!)
    //nextBlock調用:只要訂閱者發(fā)送數(shù)據就會調用!
    //nextBlock作用:處理數(shù)據,展示UI界面!
    [signal subscribeNext:^(id x) {
        //x:信號發(fā)送的內容!!
        NSLog(@"%@",x);
    }];
}
1、創(chuàng)建信號(冷信號!)

通過上文中的第一步的RACSignal調用block方法進去查看源碼:
在創(chuàng)建了一個消息對象signal后保存了block:subscriber


Snip20181102_5.png
2、訂閱信號(熱信號!!)
Snip20181102_7.png
Snip20181102_8.png
Snip20181102_9.png
3、發(fā)送數(shù)據subscriber
Snip20181102_10.png
Snip20181102_11.png
小結:RAC:中就是通過上文中1僅僅保存didSubscribe(didSubscribe作用:利用subscriber發(fā)送數(shù)據) block不執(zhí)行2保存了next(nextBlock作用:處理數(shù)據,展示UI界面) block 執(zhí)行了didSubscribe 3中執(zhí)行了next block實現(xiàn)了響應式編程
總體流程圖
Snip20181102_12.png

補充:

Snip20181102_13.png

Snip20181102_13.png
Snip20181102_14.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容