Ios reactivecococoa和NSThread
我发现了一些代码,但我不太明白它是如何工作的:Ios reactivecococoa和NSThread,ios,objective-c,reactive-programming,reactive-cocoa,Ios,Objective C,Reactive Programming,Reactive Cocoa,我发现了一些代码,但我不太明白它是如何工作的: RACSignal *oneNumberEverySecond = [[RACSignal interval:1.0f onScheduler:[RACScheduler scheduler]] scanWithStart:@0 redu
RACSignal *oneNumberEverySecond = [[RACSignal
interval:1.0f
onScheduler:[RACScheduler scheduler]]
scanWithStart:@0 reduce:^id(NSNumber *running, NSDate *next) {
return @(running.unsignedIntegerValue + 1);
}];
[oneNumberEverySecond subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
[NSThread sleepForTimeInterval:5.0f];
当我注释掉
[NSThread sleepForTimeInterval:5.0f]
时,信号停止发送值。为什么?原因是onScheduler:[RACScheduler]
使此信号在后台线程上运行。这意味着只有当其线程由操作系统运行时,它才会工作。调用[NSThread sleepForTimeInterval:5.0f]
时,它看起来会正常工作的原因是,这将在给定时间内阻止正在调用它的任何线程。在您的情况下,它将阻止主线程,这将允许操作系统给您的背景信号触发时间。如果注释掉[NSThread sleepForTimeINterval:5.0f]代码>您将看到它仍然有效,但我的代码可能是pathcy,而不是总是fire