1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- //
- // RACSubscriptionScheduler.m
- // ReactiveObjC
- //
- // Created by Josh Abernathy on 11/30/12.
- // Copyright (c) 2012 GitHub, Inc. All rights reserved.
- //
- #import "RACSubscriptionScheduler.h"
- #import "RACScheduler+Private.h"
- @interface RACSubscriptionScheduler ()
- // A private background scheduler on which to subscribe if the +currentScheduler
- // is unknown.
- @property (nonatomic, strong, readonly) RACScheduler *backgroundScheduler;
- @end
- @implementation RACSubscriptionScheduler
- #pragma mark Lifecycle
- - (instancetype)init {
- self = [super initWithName:@"org.reactivecocoa.ReactiveObjC.RACScheduler.subscriptionScheduler"];
- _backgroundScheduler = [RACScheduler scheduler];
- return self;
- }
- #pragma mark RACScheduler
- - (RACDisposable *)schedule:(void (^)(void))block {
- NSCParameterAssert(block != NULL);
- if (RACScheduler.currentScheduler == nil) return [self.backgroundScheduler schedule:block];
- block();
- return nil;
- }
- - (RACDisposable *)after:(NSDate *)date schedule:(void (^)(void))block {
- RACScheduler *scheduler = RACScheduler.currentScheduler ?: self.backgroundScheduler;
- return [scheduler after:date schedule:block];
- }
- - (RACDisposable *)after:(NSDate *)date repeatingEvery:(NSTimeInterval)interval withLeeway:(NSTimeInterval)leeway schedule:(void (^)(void))block {
- RACScheduler *scheduler = RACScheduler.currentScheduler ?: self.backgroundScheduler;
- return [scheduler after:date repeatingEvery:interval withLeeway:leeway schedule:block];
- }
- @end
|