diff --git a/RxCocoa/Common/CocoaUnits/Driver/Driver.swift b/RxCocoa/Common/CocoaUnits/Driver/Driver.swift index b6855094..821e7e26 100644 --- a/RxCocoa/Common/CocoaUnits/Driver/Driver.swift +++ b/RxCocoa/Common/CocoaUnits/Driver/Driver.swift @@ -99,7 +99,7 @@ extension Driver { */ @warn_unused_result(message="http://git.io/rxs.uo") public static func empty() -> Driver { - return Driver(raw: Observable.empty().subscribeOn(driverSubscribeOnScheduler)) + return Driver(raw: Observable.empty().subscribeOn(driverSubscribeOnScheduler())) } /** @@ -109,7 +109,7 @@ extension Driver { */ @warn_unused_result(message="http://git.io/rxs.uo") public static func never() -> Driver { - return Driver(raw: Observable.never().subscribeOn(driverSubscribeOnScheduler)) + return Driver(raw: Observable.never().subscribeOn(driverSubscribeOnScheduler())) } /** @@ -120,7 +120,7 @@ extension Driver { */ @warn_unused_result(message="http://git.io/rxs.uo") public static func just(element: E) -> Driver { - return Driver(raw: Observable.just(element).subscribeOn(driverSubscribeOnScheduler)) + return Driver(raw: Observable.just(element).subscribeOn(driverSubscribeOnScheduler())) } /** @@ -137,7 +137,7 @@ extension Driver { @warn_unused_result(message="http://git.io/rxs.uo") public static func of(elements: E ...) -> Driver { - let source = elements.toObservable().subscribeOn(driverSubscribeOnScheduler) + let source = elements.toObservable().subscribeOn(driverSubscribeOnScheduler()) return Driver(raw: source) } @@ -147,17 +147,17 @@ public struct Drive { @available(*, deprecated=2.0.0, message="Please use `Driver.empty` (`r` at the end).") public static func empty() -> Driver { - return Driver(raw: Observable.empty().subscribeOn(driverSubscribeOnScheduler)) + return Driver(raw: Observable.empty().subscribeOn(driverSubscribeOnScheduler())) } @available(*, deprecated=2.0.0, message="Please use `Driver.never` (`r` at the end).") public static func never() -> Driver { - return Driver(raw: Observable.never().subscribeOn(driverSubscribeOnScheduler)) + return Driver(raw: Observable.never().subscribeOn(driverSubscribeOnScheduler())) } @available(*, deprecated=2.0.0, message="Please use `Driver.just` (`r` at the end).") public static func just(element: E) -> Driver { - return Driver(raw: Observable.just(element).subscribeOn(driverSubscribeOnScheduler)) + return Driver(raw: Observable.just(element).subscribeOn(driverSubscribeOnScheduler())) } @available(*, deprecated=2.0.0, message="Please use `Driver.deferred` (`r` at the end).") @@ -168,7 +168,7 @@ public struct Drive { @available(*, deprecated=2.0.0, message="Please use `Driver.of` (`r` at the end).") public static func sequenceOf(elements: E ...) -> Driver { - let source = elements.toObservable().subscribeOn(driverSubscribeOnScheduler) + let source = elements.toObservable().subscribeOn(driverSubscribeOnScheduler()) return Driver(raw: source) } @@ -186,8 +186,8 @@ func driveOnScheduler(scheduler: SchedulerType, action: () -> ()) { let originalObserveOnScheduler = driverObserveOnScheduler let originalSubscribeOnScheduler = driverSubscribeOnScheduler - driverObserveOnScheduler = scheduler - driverSubscribeOnScheduler = scheduler + driverObserveOnScheduler = { scheduler } + driverSubscribeOnScheduler = { scheduler } action() @@ -195,5 +195,6 @@ func driveOnScheduler(scheduler: SchedulerType, action: () -> ()) { driverSubscribeOnScheduler = originalSubscribeOnScheduler } -var driverObserveOnScheduler: SchedulerType = MainScheduler.instance -var driverSubscribeOnScheduler: SchedulerType = ConcurrentMainScheduler.instance +// using lambas disables optimizations that break @testable (another Swift bug) +var driverObserveOnScheduler: () -> SchedulerType = { MainScheduler.instance } +var driverSubscribeOnScheduler: () -> SchedulerType = { ConcurrentMainScheduler.instance } diff --git a/RxCocoa/Common/CocoaUnits/Driver/ObservableConvertibleType+Driver.swift b/RxCocoa/Common/CocoaUnits/Driver/ObservableConvertibleType+Driver.swift index 5bc3f437..05eee133 100644 --- a/RxCocoa/Common/CocoaUnits/Driver/ObservableConvertibleType+Driver.swift +++ b/RxCocoa/Common/CocoaUnits/Driver/ObservableConvertibleType+Driver.swift @@ -22,7 +22,7 @@ extension ObservableConvertibleType { public func asDriver(onErrorJustReturn onErrorJustReturn: E) -> Driver { let source = self .asObservable() - .observeOn(driverObserveOnScheduler) + .observeOn(driverObserveOnScheduler()) .catchErrorJustReturn(onErrorJustReturn) return Driver(source) } @@ -37,7 +37,7 @@ extension ObservableConvertibleType { public func asDriver(onErrorDriveWith onErrorDriveWith: Driver) -> Driver { let source = self .asObservable() - .observeOn(driverObserveOnScheduler) + .observeOn(driverObserveOnScheduler()) .catchError { _ in onErrorDriveWith.asObservable() } @@ -54,7 +54,7 @@ extension ObservableConvertibleType { public func asDriver(onErrorRecover onErrorRecover: (error: ErrorType) -> Driver) -> Driver { let source = self .asObservable() - .observeOn(driverObserveOnScheduler) + .observeOn(driverObserveOnScheduler()) .catchError { error in onErrorRecover(error: error).asObservable() } diff --git a/RxCocoa/Common/CocoaUnits/Driver/Variable+Driver.swift b/RxCocoa/Common/CocoaUnits/Driver/Variable+Driver.swift index 8d683b09..d915fd20 100644 --- a/RxCocoa/Common/CocoaUnits/Driver/Variable+Driver.swift +++ b/RxCocoa/Common/CocoaUnits/Driver/Variable+Driver.swift @@ -20,7 +20,7 @@ extension Variable { @warn_unused_result(message="http://git.io/rxs.uo") public func asDriver() -> Driver { let source = self - .observeOn(driverObserveOnScheduler) + .observeOn(driverObserveOnScheduler()) return Driver(source) } } \ No newline at end of file diff --git a/RxExample/RxExample-iOSTests/TestScheduler+MarbleTests.swift b/RxExample/RxExample-iOSTests/TestScheduler+MarbleTests.swift index a758e3e4..c69c0364 100644 --- a/RxExample/RxExample-iOSTests/TestScheduler+MarbleTests.swift +++ b/RxExample/RxExample-iOSTests/TestScheduler+MarbleTests.swift @@ -42,7 +42,7 @@ extension TestScheduler { */ func parseEventsAndTimes(timeline: String, values: [String: T], errors: [String: ErrorType] = [:]) -> [[Recorded>]] { - print("parsing: \(timeline)") + //print("parsing: \(timeline)") typealias RecordedEvent = Recorded> let timelines = timeline.componentsSeparatedByString("|") @@ -82,7 +82,7 @@ extension TestScheduler { return (state.time + tickIncrement, state.events + [nextEvent]) } - print("parsed: \(events)") + //print("parsed: \(events)") return events } } diff --git a/RxExample/RxExample.xcodeproj/xcshareddata/xcschemes/RxExample-iOS.xcscheme b/RxExample/RxExample.xcodeproj/xcshareddata/xcschemes/RxExample-iOS.xcscheme index 9df0a481..6728d0d1 100644 --- a/RxExample/RxExample.xcodeproj/xcshareddata/xcschemes/RxExample-iOS.xcscheme +++ b/RxExample/RxExample.xcodeproj/xcshareddata/xcschemes/RxExample-iOS.xcscheme @@ -23,7 +23,7 @@