Hot Observable是主动的,尽管你并没有订阅事件,但是它会时刻推送
Cold Observable是被动的,只有当你订阅的时候,它才会发布消息。
Hot Observable可以有多个订阅者,是一对多,集合可以与订阅者共享信息
Cold Observable只能一对一,当有不同的订阅者,消息是重新完整发送。
在 ReactiveCocoa 中,我们使用 RACSignal 来表示冷信号,也就是每一个订阅者在订阅信号时都会收到完整的序列;RACSubject 用于表示热信号,订阅者接收到多少值取决于它订阅的时间。
冷信号RACSignal
RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[subscriber sendNext:@1];
[subscriber sendCompleted];
return nil;
}];
[signal subscribeNext:^(id x) {
NSLog(@"Subscriber 1 recveive: %@", x);
}];
热信号 RACSubject
//创建
RACSubject *subject = [RACSubject subject];
//订阅
[subject subscribeNext:^(id _Nullable x) {
NSLog(@"%@", x);
}];
//发送
[subject sendNext:@1];
RACSubject:信号提供者,自己可以充当信号又可以发送信号 使用场景,通常用来代替代理,有了它就可以不用定义代理了。 RACReplaySubject:重复提供信号类 RACSubject的子类 RACReplaySubject和RACSubject的区别: RACReplaySubject可以先发送信号在订阅信号,RACSubject不可以。
RACReplaySubject更像是RACSingnal 和 RACSubject 的合体版
5262

被折叠的 条评论
为什么被折叠?



