尝试每小时跟随每小时ReactiveCocoa的best practices更新我的UI。这就是我得到的:
NSDateComponents *components = [[[NSCalendar sharedCalendar] calendar] components:NSMinuteCalendarUnit fromDate:[NSDate date]];
// Generalization, I know (not every hour has 60 minutes, but bear with me).
NSInteger minutesToNextHour = 60 - components.minute;
RACSubject *updateEventSignal = [RACSubject subject];
[updateEventSignal subscribeNext:^(NSDate *now) {
// Update some UI
}];
[[[RACSignal interval:(60 * minutesToNextHour)] take:1] subscribeNext:^(id x) {
[updateEventSignal sendNext:x];
[[RACSignal interval:3600] subscribeNext:^(id x) {
[updateEventSignal sendNext:x];
}];
}];
这有一些明显的缺陷:手动订阅和发送,只是“感觉错了”。关于如何使其更具“ react 性”的任何想法?
最佳答案
您可以使用完全原始的运算符执行此操作。只是将两个间隔链接在一起,同时仍通过它们的两个值,这就是-concat:所做的事情。
我将主题重写如下:
RACSignal *updateEventSignal = [[[RACSignal
interval:(60 * minutesToNextHour)]
take:1]
concat:[RACSignal interval:3600]];
这可能无法为您提供超超精确的精度(因为两个信号之间可能会出现微小的打ic),但是对于任何UI工作而言,它都应该是Good Enough™。
关于ios - 使用ReactiveCocoa,每小时每小时执行一次操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16523571/