ReactiveCocoa:为什么订阅者有" sendNext"方法而不是" receiveNext"方法

时间:2017-04-07 03:12:48

标签: ios objective-c reactive-cocoa

我正在学习ReactiveCocoa并了解RACSignal必须订阅RACSubscriber以获取发送该事件的信号。显然RACSignal 发送事件发送到RACSubscriberRACSubscriber 接收事件来自RACSignal。但是,当您通过以下代码自定义自己的RACSignal时:

RACSignal *racsignal = [RACSignal createSignal:^RACDisposable* (id<RACSubscriber> subscriber) {
    //why subsriber "sendNext" not "receiveNext"?
    [subscriber sendNext:@100];
    return nil;
}];

RACSubscriber协议有sendNext方法让我感到困惑,因为根据我的理解,receiveNext的方法名称应该更合适。任何人都可以帮我澄清一下吗?

1 个答案:

答案 0 :(得分:0)

从技术上讲,实现RACSubscriber协议的对象不会消耗这些事件,而是将它们转发给所有订阅者。在你的情况下只有一个,但关于RACSignal的好处是它可以从不同的对象和线程中观察到。

你是对的,RACSubscriber的命名可能有点误导,但我不会那么关注,就像文档说的那样:

  

您通常不需要实施此协议。 + [RACSignal   createSignal:],RACSignal的订阅方法,或RACSubject应该   适用于大多数用途。