如何从返回数组的方法创建RACSequence

时间:2014-02-13 11:24:50

标签: reactive-cocoa

给定一个返回对象数组的方法,如何创建一个只使用该方法的结果填充的序列?

- (NSArray *) methodA { ... }

- (RACSequence *) methodB {
  return [self methodA].rac_sequence;
}

我想知道是否有可能避免执行methodA,除非实际使用了序列,但仍然从methodB返回序列以传递给我决定使用它。

更新

我设法通过使用信号而不是序列来实现我想要的行为。

- (RACSignal *)methodB {
    RACSignal *racSignal = [RACSignal defer:^RACSignal * {
        return [self methodA].rac_sequence.signal;
    }];

    return racSignal;
}

现在只在信号订阅时调用methodA。为什么推迟序列没有相似的概念?

1 个答案:

答案 0 :(得分:2)

不,因为您从NSArray开始,所以在调用rac_sequence时已经对其进行了评估。如果-methodA可以返回RACSequence,则序列的评估将会延迟,直到需要为止。