RACSequence和RACSignal有什么区别

Max*_*der 4 functional-programming ios reactive-cocoa

也许我完全错过了这个,但根据ReactiveCocoa的文档类型,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);
}];
Run Code Online (Sandbox Code Playgroud)

并且

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];
}];
Run Code Online (Sandbox Code Playgroud)

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

Rui*_*res 13

一个是pull driven(RACSequence),另一个是push driven(RACSignal).从这里:

推送驱动意味着信号的值在信号创建时没有定义,并且可能在以后可用(例如,由于网络请求或任何用户输入).Pull-driven意味着序列中的值是在信号创建时定义的,我们可以逐个查询流中的值.

在你的情况下,你做RACSignal拉动,因为你已经有了它的值.