[基础]RACSubject

2016-11-22  本文已影响0人  古愿狼

一些知识点

RACSubject的派生类

RACReplaySubject和RACSubject的区别

// 1.创建信号 
RACSubject *subject = [RACSubject subject];

//在订阅前发送的话,这个消息是不会被接收到的
[subject sendNext:@"0"];

// 2.订阅信号 
[subject subscribeNext:^(id x) { 
    NSLog(@"第一个订阅者%@",x);
}];
[subject subscribeNext:^(id x) {
    NSLog(@"第二个订阅者%@",x);
 }];
// 3.发送信号 
[subject sendNext:@"1"];

//输出
//第一个订阅者 1
//第二个订阅者 1
//第一个订阅者 2
//第二个订阅者 2
// 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);
}];

//注意如果之后再发送信号,就会按订阅者的顺序发送消息
[replaySubject sendNext:@3];


//输出
//第一个订阅者接收到的数据 1
//第一个订阅者接收到的数据 2
//第二个订阅者接收到的数据 1
//第二个订阅者接收到的数据 2
//第一个订阅者接收到的数据 3    <-- 注意这里后面的顺序变回了“一、二”
//第二个订阅者接收到的数据 3

上一篇 下一篇

猜你喜欢

热点阅读