RACSubject:信号提供者,特点:既能接收信号也能发送信号可以用同一对象.
为什么会有这个特点:继承RACSignal遵循<RACSubscriber>
@interface RACSubject : RACSignal <RACSubscriber>
内部实现和简单使用:
- 创建信号
1.0 内部实现初始化_subscribers数组
- 创建信号
- 订阅信号
2.0 创建订阅者RACSubscriber
2.1 保存nextBlock
2.2 怎么处理订阅的:[subscribers addObject:subscriber];
- 订阅信号
- 发送信号sendNext
3.1 遍历所有订阅者RACSubscriber执行nextBlock发送消息.
- 发送信号sendNext
代码实现
作用:逆向传值替代代理和block.
//1. 创建信号
RACSubject *subject = [RACSubject subject];
//2. 订阅信号
[subject subscribeNext:^(id x) {
NSLog(@"订阅者1接收到信号%@",x);
}];
[subject subscribeNext:^(id x) {
NSLog(@"订阅者2接收到信号%@",x);
}];
//3. 发送信号
[subject sendNext:@"subject发送"];
网友评论