给定一个返回对象数组的方法,如何创建一个仅使用该方法的结果填充的序列?
- (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。为什么没有类似的概念来推迟序列?
最佳答案
不,因为您以NSArray
开头,所以在调用rac_sequence
时已经对其进行了评估。如果-methodA
可以返回RACSequence
,则序列的求值将延迟到需要时才进行。