1、RACSignal:
// 只要订阅者调用sendNext,就会执行nextBlock
// 只要订阅RACDynamicSignal,就会执行didSubscribe
// 前提条件是RACDynamicSignal,不同类型信号的订阅,处理订阅的事情不一样
//创建信号,此时信号是冷信号,并不能发送数据 RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { [subscriber sendNext:@"发送数据"]; //信号销毁 return [RACDisposable disposableWithBlock:^{ NSLog(@"信号取消订阅"); }]; }]; //信号订阅,此时信号变为热信号,接收到数据 [signal subscribeNext:^(id x) {
// nextBlock调用:只要订阅者发送数据就会调用
NSLog(@"%@", x); }];
2、RACSubject
//创建信号 RACSubject *subject = [RACSubject subject]; /* 不同信号订阅的方式不一样 RACSubject处理订阅:仅仅是保存订阅者,可以多个订阅者 底层实现:遍历所有的订阅者,调用nextBlock 执行流程: RACSubject被订阅,仅仅是保存订阅者 RACSubject发送数据,遍历所有的订阅,调用他们的nextBlock */ [subject subscribeNext:^(id x) { NSLog(@"++++++%@", x); }]; [subject subscribeNext:^(id x) { NSLog(@"-----%@", x); }]; [subject sendNext:@111];
3、RACReplaySubject
时间: 2024-12-12 16:45:44