【发布时间】:2015-01-11 19:34:18
【问题描述】:
我正在尝试围绕 ReactiveCocoa 框架进行研究,但我一直在试图弄清楚如何有条件地延迟。
例如,我想在数组为空时将 CADisplayLink 暂停属性设置为 false。以下是我如何做到这一点的:
RACSignal *changeSignal = [self rac_valuesAndChangesForKeyPath:@keypath(self, projectiles) options:NSKeyValueObservingOptionNew observer:nil];
RAC(self.displayLink, paused) = [changeSignal map:^id(RACTuple *value) {
return @([((NSMutableArray *)value.first) count] == 0);
}];
但在我暂停显示链接之前,我想保持动画几秒钟,所以我在地图块的末尾添加了一个delay:2.5];。
现在我遇到的问题是它要等待 2.5 秒才能停止并启动显示链接。我只希望 RAC 在将 self.displayLink.paused 设置为 YES 时暂停,而不是在我将其设置为 NO 时暂停。
这种类型的“条件延迟”在 ReactiveCocoa 中是否可以实现,如果可以,它是如何实现的?
【问题讨论】:
标签: ios objective-c functional-programming reactive-programming reactive-cocoa