RACReplaySubject:继承自RACSubject特点:可以先发送数据在订阅信号(基于内部实现)
内部实现和简单使用:
- 创建信号
1.0 内部初始化_valuesReceived(发送的值)
1.1 内部实现初始化_subscribers数组
- 创建信号
- 订阅信号
2.0 创建订阅者
2.1 保存nextBlock
2.2 拿到订阅者,遍历所有值.
2.3 调用subscriber的sendNext方法发送所有值(此时你还没有发送的值,所以调用send不会有作用)
- 订阅信号
- 发送信号sendNext.
3.0 此时会将消息addObject到_valuesReceived内保存
3.1 遍历所有订阅者,发送数据.
- 发送信号sendNext.
代码实现
//1. 创建信号
RACReplaySubject *subject = [RACReplaySubject subject];
//2. 订阅信号
[subject subscribeNext:^(id x) {
NSLog(@"信号%@发送执行",x);
}];
//3.发送信号
[subject sendNext:@"RACReplaySubject"];
总结信号
信号类:仅仅表示有数据产生
订阅者:发送数据执行nextBlock
不同的信号订阅方式不同.不同订阅者发送数据方式也不同
复习巩固:
网友评论