こんなことがあり、
@rizumita もう解決済みかも知れませんが、[[[RACSignal interval:5] startWith:[NSDate date]] subscribeNext:^(NSDate *date) {}]; という感じでしょうか。
— いけしょー / 池田翔さん (@ikesyo) 2013年4月22日
前回の追記として、一回処理を即時実行してから、インターバルで処理を行いたい場合は以下のように書けるかと思います。
// NSTimer - (void)doAndThenRepeatByTimer { NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(someMethod:) userInfo:nil repeats:YES]; [timer fire]; } // RAC - (void)doAndThenRepeatBySignal { [[[RACSignal interval:5.0] startWith:[NSDate date]] subscribeNext:^(NSDate *date) { NSLog(@"%@", date); }]; }
-[RACSignal startWith:]
を使用すると、引数で渡した値1つだけのシグナルが用意され、その値の後にレシーバーのシグナルの値が続いて発行される形になります。なので、+[RACSignal interval:]
の場合と同じ型の値として、[NSDate date]
で現在日時の値が即座に発行されるようにしています(interval:
で発行されるのはその時々の[NSDate date]
)。