我正在尝试学习 ReactiveCocoa,并且正在编写一个简单的 Space Invaders 克隆,基于 Ray Wenderlich 教程。最近在开发过程中,我遇到了一个我无法解决的问题。基本上我有两个信号:
- 点击手势信号
- 每秒触发的定时序列
我想要实现的是将这些信号组合成一个新信号,当两个信号都发生变化时触发:这可能吗?我看到了 combineLatest 方法,但是只要任何信号发生变化,就会执行该块。
我想要的伪代码是:
RACSignal *updateEventSignal = [RACSignal interval:1 onScheduler:[RACScheduler mainThreadScheduler]];
RACSignal *gestureSignal = [[UITapGestureRecognizer new] rac_gestureSignal];
[[RACSignal combineBoth:@[gestureSignal, updateEventSignal]
reduce:^id(id tap, id counter){
return tap;
}]
subscribeNext:^(id x) {
NSLog(@"Tapped [%@]", x);
}];
可能我可以通过其他方式获得相同的结果,或者这不是预期的行为或 ReactiveCocoa,但此时我想知道我是否处于正确的反应轨道。