【发布时间】:2016-08-23 11:42:16
【问题描述】:
我有以下代码:
- (RACSignal *)addSyncTask:(RACSignal *)task withInterval:(NSTimeInterval)interval
{
return [[task concat:[[RACSignal empty] delay:interval]] then:^RACSignal *{
return [self addSyncTask:task withInterval:interval];
}];
}
- (void)setupFooSync
{
RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[self.API syncFooWithCompletion:^(id response, NSError *error) {
[subscriber sendError:error];
[subscriber sendCompleted];
}];
return nil;
}];
[self addSyncTask:signal withInterval:60];
}
这个想法是,一旦setupFooSync 被调用,同步将每 60 秒发生一次,直到包含的实例被释放。但是,使用上面的代码,同步永远不会发生。当我将+createSignal: 更改为+startLazilyWithScheduler: 时,它只发生一次。我猜测由于每次都重复使用相同的同步信号,因此需要进行某种重置。任何指针将不胜感激。
【问题讨论】:
标签: ios objective-c reactive-cocoa