オブジェクトの配列を返すメソッドがある場合、そのメソッドを使用したときにそのメソッドの結果のみが入力されるシーケンスを作成するにはどうすればよいでしょうか。
- (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
、シーケンスの評価は必要になるまで延期されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加