给定一个返回对象数组的方法,如何创建一个只使用该方法的结果填充的序列?
- (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。为什么推迟序列没有相似的概念?
答案 0 :(得分:2)
不,因为您从NSArray
开始,所以在调用rac_sequence
时已经对其进行了评估。如果-methodA
可以返回RACSequence
,则序列的评估将会延迟,直到需要为止。