RACSequence和RACSignal有什么区别

时间:2015-03-09 22:27:49

标签: ios functional-programming reactive-cocoa

也许我完全错过了这个但是根据ReactiveCocoa on their types上的文档,RACSequences是信号。

然而。我看到你有这样的代码的例子:

RACSignal *letters = [@"A B C D E F G H I" componentsSeparatedByString:@" "].rac_sequence.signal;

// Outputs: A B C D E F G H I
[letters subscribeNext:^(NSString *x) {
     NSLog(@"%@", x);
}];

RACSequence *letters = [@"A B C D E F G H I" componentsSeparatedByString:@" "].rac_sequence;

// Contains: AA BB CC DD EE FF GG HH II
RACSequence *mapped = [letters map:^(NSString *value) {
    return [value stringByAppendingString:value];
}];

很多例子都有RACSequence和RACSignal。 rac_sequence.signal或只订阅信号本身有什么区别?

1 个答案:

答案 0 :(得分:13)

一个是拉动(RACSequence),另一个是推动(RACSignal)。来自here

  

推动驱动意味着信号的值未定义在   信号创建的时刻,可能在以后可用   (例如,作为网络请求或任何用户输入的结果)。   拉动意味着序列中的值定义在   信号创建的时刻,我们可以从流中查询值   一个接一个。

在您的情况下,您将RACSignal拉动,因为您已经拥有其值。