RACSubject和RACReplaySubject

2016-12-03  本文已影响22人  小胖子2号

RACSubject使用步骤

RACSubject:底层实现和RACSignal不一样。

RACReplaySubject使用步骤:

RACReplaySubject:底层实现和RACSubject不一样。

- (void)viewDidLoad {
    [super viewDidLoad];

     // 订阅信号
    [_redView.btnClickSignal subscribeNext:^(id x) {
       
        NSLog(@"%@",x);
    }];
}

- (void)RACReplaySubject
{
   // 1.创建信号
    RACReplaySubject *replaySubject = [RACReplaySubject subject];

    // 2.发送信号
    [replaySubject sendNext:@1];
    [replaySubject sendNext:@2];

    // 3.订阅信号
    [replaySubject subscribeNext:^(id x) {

        NSLog(@"第一个订阅者接收到的数据%@",x);
    }];

    // 订阅信号
    [replaySubject subscribeNext:^(id x) {

        NSLog(@"第二个订阅者接收到的数据%@",x);
    }];
}


- (void)RACSubject
{
    // 1.创建信号
    RACSubject *subject = [RACSubject subject];

    // 2.订阅信号
    [subject subscribeNext:^(id x) {
        // block调用时刻:当信号发出新值,就会调用.
        NSLog(@"第一个订阅者%@",x);
    }];
    [subject subscribeNext:^(id x) {
        // block调用时刻:当信号发出新值,就会调用.
        NSLog(@"第二个订阅者%@",x);
    }];

    // 3.发送信号
    [subject sendNext:@"1"];
 
    // 保存订阅者
   
    // 底层实现:遍历所有的订阅者,调用nextBlock
    
    // 执行流程:
    
    // RACSubject被订阅,仅仅是保存订阅者
    // RACSubject发送数据,遍历所有的订阅,调用他们的nextBlock
}

上一篇 下一篇

猜你喜欢

热点阅读