diff --git a/Documentation/GettingStarted.md b/Documentation/GettingStarted.md index 69453083..dab7945a 100644 --- a/Documentation/GettingStarted.md +++ b/Documentation/GettingStarted.md @@ -293,7 +293,7 @@ func myJust(element: E) -> Observable { return Observable.create { observer in observer.on(.Next(element)) observer.on(.Completed) - return NopDisposable.instance + return Disposables.create() } } @@ -329,7 +329,7 @@ func myFrom(sequence: [E]) -> Observable { } observer.on(.Completed) - return NopDisposable.instance + return Disposables.create() } } @@ -382,7 +382,7 @@ func myInterval(interval: NSTimeInterval) -> Observable { var next = 0 dispatch_source_set_timer(timer, 0, UInt64(interval * Double(NSEC_PER_SEC)), 0) - let cancel = AnonymousDisposable { + let cancel = Disposables.create { print("Disposed") dispatch_source_cancel(timer) } @@ -574,7 +574,7 @@ extension NSURLSession { task.resume() - return AnonymousDisposable { + return Disposables.create { task.cancel() } } @@ -831,7 +831,7 @@ extension ObservableType { observer.on(.Completed) } } - return AnonymousDisposable { + return Disposables.create { print("disposing \(identifier)") subscription.dispose() } diff --git a/Rx.playground/Pages/Creating_and_Subscribing_to_Observables.xcplaygroundpage/Contents.swift b/Rx.playground/Pages/Creating_and_Subscribing_to_Observables.xcplaygroundpage/Contents.swift index f7cbf79c..2d82494f 100644 --- a/Rx.playground/Pages/Creating_and_Subscribing_to_Observables.xcplaygroundpage/Contents.swift +++ b/Rx.playground/Pages/Creating_and_Subscribing_to_Observables.xcplaygroundpage/Contents.swift @@ -102,7 +102,7 @@ example("create") { return Observable.create { observer in observer.on(.next(element)) observer.on(.completed) - return NopDisposable.instance + return Disposables.create() } } @@ -170,7 +170,7 @@ example("deferred") { observer.onNext("🐶") observer.onNext("🐱") observer.onNext("🐵") - return NopDisposable.instance + return Disposables.create() } } diff --git a/Rx.playground/Pages/Debugging_Operators.xcplaygroundpage/Contents.swift b/Rx.playground/Pages/Debugging_Operators.xcplaygroundpage/Contents.swift index e2759149..b83b0905 100644 --- a/Rx.playground/Pages/Debugging_Operators.xcplaygroundpage/Contents.swift +++ b/Rx.playground/Pages/Debugging_Operators.xcplaygroundpage/Contents.swift @@ -34,7 +34,7 @@ example("debug") { observer.onNext("🐭") observer.onCompleted() - return NopDisposable.instance + return Disposables.create() } sequenceThatErrors diff --git a/Rx.playground/Pages/Error_Handling_Operators.xcplaygroundpage/Contents.swift b/Rx.playground/Pages/Error_Handling_Operators.xcplaygroundpage/Contents.swift index 782713a3..00570f86 100644 --- a/Rx.playground/Pages/Error_Handling_Operators.xcplaygroundpage/Contents.swift +++ b/Rx.playground/Pages/Error_Handling_Operators.xcplaygroundpage/Contents.swift @@ -85,7 +85,7 @@ example("retry") { observer.onNext("🐭") observer.onCompleted() - return NopDisposable.instance + return Disposables.create() } sequenceThatErrors @@ -119,7 +119,7 @@ example("retry maxAttemptCount") { observer.onNext("🐭") observer.onCompleted() - return NopDisposable.instance + return Disposables.create() } sequenceThatErrors diff --git a/Rx.playground/Pages/Introduction.xcplaygroundpage/Contents.swift b/Rx.playground/Pages/Introduction.xcplaygroundpage/Contents.swift index 49e5d685..80f529e7 100644 --- a/Rx.playground/Pages/Introduction.xcplaygroundpage/Contents.swift +++ b/Rx.playground/Pages/Introduction.xcplaygroundpage/Contents.swift @@ -58,7 +58,7 @@ example("Observable with no subscribers") { print("This will never be printed") observerOfString.on(.next("😬")) observerOfString.on(.completed) - return NopDisposable.instance + return Disposables.create() } } /*: @@ -70,7 +70,7 @@ example("Observable with subscriber") { print("Observable created") observerOfString.on(.next("😉")) observerOfString.on(.completed) - return NopDisposable.instance + return Disposables.create() } .subscribe { event in print(event) diff --git a/Rx.xcodeproj/project.pbxproj b/Rx.xcodeproj/project.pbxproj index 1aa1b67a..5f51d1d3 100644 --- a/Rx.xcodeproj/project.pbxproj +++ b/Rx.xcodeproj/project.pbxproj @@ -121,8 +121,6 @@ C8093CDE1B8A72BE0088E94D /* DisposeBag.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C581B8A72BE0088E94D /* DisposeBag.swift */; }; C8093CDF1B8A72BE0088E94D /* DisposeBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C591B8A72BE0088E94D /* DisposeBase.swift */; }; C8093CE01B8A72BE0088E94D /* DisposeBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C591B8A72BE0088E94D /* DisposeBase.swift */; }; - C8093CE11B8A72BE0088E94D /* NAryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5A1B8A72BE0088E94D /* NAryDisposable.swift */; }; - C8093CE21B8A72BE0088E94D /* NAryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5A1B8A72BE0088E94D /* NAryDisposable.swift */; }; C8093CE51B8A72BE0088E94D /* NopDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5C1B8A72BE0088E94D /* NopDisposable.swift */; }; C8093CE61B8A72BE0088E94D /* NopDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5C1B8A72BE0088E94D /* NopDisposable.swift */; }; C8093CE71B8A72BE0088E94D /* ScheduledDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5D1B8A72BE0088E94D /* ScheduledDisposable.swift */; }; @@ -907,7 +905,6 @@ C8F0BFF21BBBFB8B001B112F /* ObserverType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CAB1B8A72BE0088E94D /* ObserverType.swift */; }; C8F0BFF31BBBFB8B001B112F /* SubscribeOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C8B1B8A72BE0088E94D /* SubscribeOn.swift */; }; C8F0BFF41BBBFB8B001B112F /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C681B8A72BE0088E94D /* Observable.swift */; }; - C8F0BFF51BBBFB8B001B112F /* NAryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5A1B8A72BE0088E94D /* NAryDisposable.swift */; }; C8F0BFF61BBBFB8B001B112F /* SerialDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5F1B8A72BE0088E94D /* SerialDisposable.swift */; }; C8F0BFF71BBBFB8B001B112F /* Never.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA0B1B93959F004D233E /* Never.swift */; }; C8F0BFF91BBBFB8B001B112F /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C641B8A72BE0088E94D /* Event.swift */; }; @@ -1018,6 +1015,10 @@ CBEE77201BD649A000AD584C /* ToArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBEE771E1BD649A000AD584C /* ToArray.swift */; }; CBEE77211BD649A000AD584C /* ToArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBEE771E1BD649A000AD584C /* ToArray.swift */; }; CBEE77221BD649A000AD584C /* ToArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBEE771E1BD649A000AD584C /* ToArray.swift */; }; + CDDEF16A1D4FB40000CA8546 /* Disposables.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDDEF1691D4FB40000CA8546 /* Disposables.swift */; }; + CDDEF16B1D4FB40000CA8546 /* Disposables.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDDEF1691D4FB40000CA8546 /* Disposables.swift */; }; + CDDEF16C1D4FB40000CA8546 /* Disposables.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDDEF1691D4FB40000CA8546 /* Disposables.swift */; }; + CDDEF16D1D4FB40000CA8546 /* Disposables.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDDEF1691D4FB40000CA8546 /* Disposables.swift */; }; D203C4F31BB9C4CA00D02D00 /* RxCollectionViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253F11B8A752B00B02D69 /* RxCollectionViewReactiveArrayDataSource.swift */; }; D203C4F41BB9C52400D02D00 /* RxTableViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253F21B8A752B00B02D69 /* RxTableViewReactiveArrayDataSource.swift */; }; D203C4F51BB9C52900D02D00 /* ItemEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253F41B8A752B00B02D69 /* ItemEvents.swift */; }; @@ -1106,7 +1107,6 @@ D2EBEAF21BB9B6AE003A27DC /* CompositeDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C571B8A72BE0088E94D /* CompositeDisposable.swift */; }; D2EBEAF31BB9B6AE003A27DC /* DisposeBag.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C581B8A72BE0088E94D /* DisposeBag.swift */; }; D2EBEAF41BB9B6AE003A27DC /* DisposeBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C591B8A72BE0088E94D /* DisposeBase.swift */; }; - D2EBEAF51BB9B6AE003A27DC /* NAryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5A1B8A72BE0088E94D /* NAryDisposable.swift */; }; D2EBEAF61BB9B6B2003A27DC /* NopDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5C1B8A72BE0088E94D /* NopDisposable.swift */; }; D2EBEAF71BB9B6B2003A27DC /* ScheduledDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5D1B8A72BE0088E94D /* ScheduledDisposable.swift */; }; D2EBEAF91BB9B6B2003A27DC /* SerialDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5F1B8A72BE0088E94D /* SerialDisposable.swift */; }; @@ -1443,8 +1443,6 @@ C8093C571B8A72BE0088E94D /* CompositeDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompositeDisposable.swift; sourceTree = ""; }; C8093C581B8A72BE0088E94D /* DisposeBag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeBag.swift; sourceTree = ""; }; C8093C591B8A72BE0088E94D /* DisposeBase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeBase.swift; sourceTree = ""; }; - C8093C5A1B8A72BE0088E94D /* NAryDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NAryDisposable.swift; sourceTree = ""; }; - C8093C5B1B8A72BE0088E94D /* NAryDisposable.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NAryDisposable.tt; sourceTree = ""; }; C8093C5C1B8A72BE0088E94D /* NopDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NopDisposable.swift; sourceTree = ""; }; C8093C5D1B8A72BE0088E94D /* ScheduledDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledDisposable.swift; sourceTree = ""; }; C8093C5F1B8A72BE0088E94D /* SerialDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SerialDisposable.swift; sourceTree = ""; }; @@ -1763,6 +1761,7 @@ CB883B441BE256D4000AC2EE /* BooleanDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BooleanDisposable.swift; sourceTree = ""; }; CB883B491BE369AA000AC2EE /* AddRef.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddRef.swift; sourceTree = ""; }; CBEE771E1BD649A000AD584C /* ToArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToArray.swift; sourceTree = ""; }; + CDDEF1691D4FB40000CA8546 /* Disposables.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Disposables.swift; sourceTree = ""; }; D2138C751BB9BE9800339B5C /* RxCocoa.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RxCocoa.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D2245A1A1BD5657300E7146F /* WithLatestFrom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WithLatestFrom.swift; sourceTree = ""; }; D22B6D251BC8504A00BCE0AB /* SkipWhile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SkipWhile.swift; sourceTree = ""; }; @@ -1988,14 +1987,13 @@ C8093C581B8A72BE0088E94D /* DisposeBag.swift */, C8093C591B8A72BE0088E94D /* DisposeBase.swift */, C84CC5661BDD08A500E06A64 /* SubscriptionDisposable.swift */, - C8093C5A1B8A72BE0088E94D /* NAryDisposable.swift */, - C8093C5B1B8A72BE0088E94D /* NAryDisposable.tt */, C8093C5C1B8A72BE0088E94D /* NopDisposable.swift */, CB883B3F1BE24C15000AC2EE /* RefCountDisposable.swift */, C8093C5D1B8A72BE0088E94D /* ScheduledDisposable.swift */, C8093C5F1B8A72BE0088E94D /* SerialDisposable.swift */, C8093C601B8A72BE0088E94D /* SingleAssignmentDisposable.swift */, C8093C611B8A72BE0088E94D /* StableCompositeDisposable.swift */, + CDDEF1691D4FB40000CA8546 /* Disposables.swift */, ); path = Disposables; sourceTree = ""; @@ -3919,6 +3917,7 @@ C8093D9E1B8A72BE0088E94D /* SerialDispatchQueueScheduler.swift in Sources */, C8093D341B8A72BE0088E94D /* RefCount.swift in Sources */, C8093D0E1B8A72BE0088E94D /* Concat.swift in Sources */, + CDDEF16B1D4FB40000CA8546 /* Disposables.swift in Sources */, C8093CCA1B8A72BE0088E94D /* Lock.swift in Sources */, C8093D441B8A72BE0088E94D /* Take.swift in Sources */, C84CC5591BDCF51200E06A64 /* SynchronizedSubscribeType.swift in Sources */, @@ -3943,7 +3942,6 @@ CBEE77201BD649A000AD584C /* ToArray.swift in Sources */, C8093CFE1B8A72BE0088E94D /* Observable.swift in Sources */, C84CC55E1BDD010800E06A64 /* SynchronizedUnsubscribeType.swift in Sources */, - C8093CE21B8A72BE0088E94D /* NAryDisposable.swift in Sources */, C8093CEC1B8A72BE0088E94D /* SerialDisposable.swift in Sources */, C8C3DA0D1B93959F004D233E /* Never.swift in Sources */, C84CC5681BDD08A500E06A64 /* SubscriptionDisposable.swift in Sources */, @@ -4142,6 +4140,7 @@ C8093D9D1B8A72BE0088E94D /* SerialDispatchQueueScheduler.swift in Sources */, C8093D331B8A72BE0088E94D /* RefCount.swift in Sources */, C8093D0D1B8A72BE0088E94D /* Concat.swift in Sources */, + CDDEF16A1D4FB40000CA8546 /* Disposables.swift in Sources */, C8093CC91B8A72BE0088E94D /* Lock.swift in Sources */, C8093D431B8A72BE0088E94D /* Take.swift in Sources */, C84CC5581BDCF51200E06A64 /* SynchronizedSubscribeType.swift in Sources */, @@ -4166,7 +4165,6 @@ CBEE771F1BD649A000AD584C /* ToArray.swift in Sources */, C8093CFD1B8A72BE0088E94D /* Observable.swift in Sources */, C84CC55D1BDD010800E06A64 /* SynchronizedUnsubscribeType.swift in Sources */, - C8093CE11B8A72BE0088E94D /* NAryDisposable.swift in Sources */, C8093CEB1B8A72BE0088E94D /* SerialDisposable.swift in Sources */, C8C3DA0C1B93959F004D233E /* Never.swift in Sources */, C84CC5671BDD08A500E06A64 /* SubscriptionDisposable.swift in Sources */, @@ -4289,6 +4287,7 @@ C8F0BFE01BBBFB8B001B112F /* SerialDispatchQueueScheduler.swift in Sources */, C8F0BFE11BBBFB8B001B112F /* RefCount.swift in Sources */, C8F0BFE21BBBFB8B001B112F /* Concat.swift in Sources */, + CDDEF16D1D4FB40000CA8546 /* Disposables.swift in Sources */, C8F0BFE31BBBFB8B001B112F /* Lock.swift in Sources */, C8F0BFE41BBBFB8B001B112F /* Take.swift in Sources */, C84CC55B1BDCF51200E06A64 /* SynchronizedSubscribeType.swift in Sources */, @@ -4313,7 +4312,6 @@ CBEE77221BD649A000AD584C /* ToArray.swift in Sources */, C8F0BFF41BBBFB8B001B112F /* Observable.swift in Sources */, C84CC5601BDD010800E06A64 /* SynchronizedUnsubscribeType.swift in Sources */, - C8F0BFF51BBBFB8B001B112F /* NAryDisposable.swift in Sources */, C8F0BFF61BBBFB8B001B112F /* SerialDisposable.swift in Sources */, C8F0BFF71BBBFB8B001B112F /* Never.swift in Sources */, C84CC56A1BDD08A500E06A64 /* SubscriptionDisposable.swift in Sources */, @@ -4607,7 +4605,6 @@ D2EBEAF61BB9B6B2003A27DC /* NopDisposable.swift in Sources */, CB30D9EB1BF0E3500084C1C0 /* SingleAsync.swift in Sources */, D2EBEAFF1BB9B6BA003A27DC /* Buffer.swift in Sources */, - D2EBEAF51BB9B6AE003A27DC /* NAryDisposable.swift in Sources */, D2EBEB1D1BB9B6C1003A27DC /* Scan.swift in Sources */, D2EBEB261BB9B6C1003A27DC /* Throttle.swift in Sources */, D2EBEAE81BB9B697003A27DC /* Rx.swift in Sources */, @@ -4631,6 +4628,7 @@ D2EBEB2B1BB9B6CA003A27DC /* Observable+Aggregate.swift in Sources */, D2EBEB291BB9B6C1003A27DC /* Zip+arity.swift in Sources */, D2EBEB241BB9B6C1003A27DC /* TakeUntil.swift in Sources */, + CDDEF16C1D4FB40000CA8546 /* Disposables.swift in Sources */, C84CC55A1BDCF51200E06A64 /* SynchronizedSubscribeType.swift in Sources */, D2EBEB3B1BB9B6D8003A27DC /* OperationQueueScheduler.swift in Sources */, D2EBEAE51BB9B697003A27DC /* AnyObserver.swift in Sources */, diff --git a/RxBlocking/RunLoopLock.swift b/RxBlocking/RunLoopLock.swift index 8b5eec73..6112ae88 100644 --- a/RxBlocking/RunLoopLock.swift +++ b/RxBlocking/RunLoopLock.swift @@ -43,7 +43,7 @@ class RunLoopLock { if CurrentThreadScheduler.isScheduleRequired { _ = CurrentThreadScheduler.instance.schedule(()) { _ in action() - return NopDisposable.instance + return Disposables.create() } } else { diff --git a/RxCocoa/Common/DelegateProxyType.swift b/RxCocoa/Common/DelegateProxyType.swift index 893ccb23..2596e398 100644 --- a/RxCocoa/Common/DelegateProxyType.swift +++ b/RxCocoa/Common/DelegateProxyType.swift @@ -228,7 +228,7 @@ extension DelegateProxyType { assert(proxy.forwardToDelegate() === forwardDelegate, "Setting of delegate failed") - return AnonymousDisposable { + return Disposables.create { MainScheduler.ensureExecutingOnScheduler() let delegate: AnyObject? = weakForwardDelegate @@ -273,6 +273,6 @@ extension ObservableType { } } - return CompositeDisposable(subscription, disposable) + return Disposables.create(subscription, disposable) } } diff --git a/RxCocoa/Common/Observables/Implementations/KVOObservable.swift b/RxCocoa/Common/Observables/Implementations/KVOObservable.swift index 55a24c54..16d55bb9 100644 --- a/RxCocoa/Common/Observables/Implementations/KVOObservable.swift +++ b/RxCocoa/Common/Observables/Implementations/KVOObservable.swift @@ -42,7 +42,7 @@ class KVOObservable observer.on(.next(value as? Element)) } - return AnonymousDisposable(observer.dispose) + return Disposables.create(with: observer.dispose) } } diff --git a/RxCocoa/Common/Observables/NSNotificationCenter+Rx.swift b/RxCocoa/Common/Observables/NSNotificationCenter+Rx.swift index 8a87cfe4..d89dfb97 100644 --- a/RxCocoa/Common/Observables/NSNotificationCenter+Rx.swift +++ b/RxCocoa/Common/Observables/NSNotificationCenter+Rx.swift @@ -26,7 +26,7 @@ extension NotificationCenter { observer.on(.next(notification)) } - return AnonymousDisposable { + return Disposables.create { self.removeObserver(nsObserver) } } diff --git a/RxCocoa/Common/Observables/NSURLSession+Rx.swift b/RxCocoa/Common/Observables/NSURLSession+Rx.swift index 0e183bda..35eb6f2a 100644 --- a/RxCocoa/Common/Observables/NSURLSession+Rx.swift +++ b/RxCocoa/Common/Observables/NSURLSession+Rx.swift @@ -155,7 +155,7 @@ extension URLSession { let t = task t.resume() - return AnonymousDisposable(task.cancel) + return Disposables.create(with: task.cancel) } } diff --git a/RxCocoa/OSX/NSControl+Rx.swift b/RxCocoa/OSX/NSControl+Rx.swift index 47bddd6e..2adeacef 100644 --- a/RxCocoa/OSX/NSControl+Rx.swift +++ b/RxCocoa/OSX/NSControl+Rx.swift @@ -29,7 +29,7 @@ extension NSControl { guard let control = self else { observer.on(.completed) - return NopDisposable.instance + return Disposables.create() } let observer = ControlTarget(control: control) { control in @@ -54,7 +54,7 @@ extension NSControl { return Observable.create { [weak weakControl = control] (observer: AnyObserver) in guard let control = weakControl else { observer.on(.completed) - return NopDisposable.instance + return Disposables.create() } observer.on(.next(getter(control))) diff --git a/RxCocoa/iOS/UIBarButtonItem+Rx.swift b/RxCocoa/iOS/UIBarButtonItem+Rx.swift index 4331b8f9..3b931c18 100644 --- a/RxCocoa/iOS/UIBarButtonItem+Rx.swift +++ b/RxCocoa/iOS/UIBarButtonItem+Rx.swift @@ -34,7 +34,7 @@ extension UIBarButtonItem { Observable.create { [weak self] observer in guard let control = self else { observer.on(.completed) - return NopDisposable.instance + return Disposables.create() } let target = BarButtonItemTarget(barButtonItem: control) { observer.on(.next()) diff --git a/RxCocoa/iOS/UIControl+Rx.swift b/RxCocoa/iOS/UIControl+Rx.swift index cc1b8350..8c421bb1 100644 --- a/RxCocoa/iOS/UIControl+Rx.swift +++ b/RxCocoa/iOS/UIControl+Rx.swift @@ -45,7 +45,7 @@ extension UIControl { guard let control = self else { observer.on(.completed) - return NopDisposable.instance + return Disposables.create() } let controlTarget = ControlTarget(control: control, controlEvents: controlEvents) { @@ -53,7 +53,7 @@ extension UIControl { observer.on(.next()) } - return AnonymousDisposable(controlTarget.dispose) + return Disposables.create(with: controlTarget.dispose) }.takeUntil(rx_deallocated) return ControlEvent(events: source) @@ -67,7 +67,7 @@ extension UIControl { let source: Observable = Observable.create { [weak weakControl = control] observer in guard let control = weakControl else { observer.on(.completed) - return NopDisposable.instance + return Disposables.create() } observer.on(.next(getter(control))) @@ -78,7 +78,7 @@ extension UIControl { } } - return AnonymousDisposable(controlTarget.dispose) + return Disposables.create(with: controlTarget.dispose) } .takeUntil((control as! NSObject).rx_deallocated) diff --git a/RxCocoa/iOS/UIGestureRecognizer+Rx.swift b/RxCocoa/iOS/UIGestureRecognizer+Rx.swift index 92858887..82b3fcd0 100644 --- a/RxCocoa/iOS/UIGestureRecognizer+Rx.swift +++ b/RxCocoa/iOS/UIGestureRecognizer+Rx.swift @@ -64,7 +64,7 @@ extension Reactive where Self: UIGestureRecognizer { guard let control = self else { observer.on(.completed) - return NopDisposable.instance + return Disposables.create() } let observer = GestureTarget(control) { diff --git a/RxExample/RxExample-iOSTests/TestScheduler+MarbleTests.swift b/RxExample/RxExample-iOSTests/TestScheduler+MarbleTests.swift index 5cd2e991..8f41a873 100644 --- a/RxExample/RxExample-iOSTests/TestScheduler+MarbleTests.swift +++ b/RxExample/RxExample-iOSTests/TestScheduler+MarbleTests.swift @@ -150,13 +150,13 @@ extension TestScheduler { let scheduledEvents = events[attemptCount].map { event in return self.scheduleRelative((), dueTime: resolution * TimeInterval(event.time)) { _ in observer.on(event.value) - return NopDisposable.instance + return Disposables.create() } } attemptCount += 1 - return CompositeDisposable(disposables: scheduledEvents) + return Disposables.create(scheduledEvents) } } diff --git a/RxExample/RxExample/Examples/ImagePicker/UIImagePickerController+RxCreate.swift b/RxExample/RxExample/Examples/ImagePicker/UIImagePickerController+RxCreate.swift index 58b6f9b7..35342a15 100644 --- a/RxExample/RxExample/Examples/ImagePicker/UIImagePickerController+RxCreate.swift +++ b/RxExample/RxExample/Examples/ImagePicker/UIImagePickerController+RxCreate.swift @@ -45,18 +45,18 @@ extension UIImagePickerController { } catch let error { observer.on(.error(error)) - return NopDisposable.instance + return Disposables.create() } guard let parent = parent else { observer.on(.completed) - return NopDisposable.instance + return Disposables.create() } parent.present(imagePicker, animated: animated, completion: nil) observer.on(.next(imagePicker)) - return CompositeDisposable(dismissDisposable, AnonymousDisposable { + return Disposables.create(dismissDisposable, Disposables.create { dismissViewController(imagePicker, animated: animated) }) } diff --git a/RxExample/RxExample/Operators.swift b/RxExample/RxExample/Operators.swift index 59c9e795..1ed6126b 100644 --- a/RxExample/RxExample/Operators.swift +++ b/RxExample/RxExample/Operators.swift @@ -69,7 +69,7 @@ func <-> (textInput: RxTextInput, variable: Variable) -> Disposable { bindToUIDisposable.dispose() }) - return StableCompositeDisposable.create(bindToUIDisposable, bindToVariable) + return Disposables.create(bindToUIDisposable, bindToVariable) } func <-> (property: ControlProperty, variable: Variable) -> Disposable { @@ -92,7 +92,7 @@ func <-> (property: ControlProperty, variable: Variable) -> Disposable bindToUIDisposable.dispose() }) - return StableCompositeDisposable.create(bindToUIDisposable, bindToVariable) + return Disposables.create(bindToUIDisposable, bindToVariable) } // } diff --git a/RxExample/RxExample/Services/ActivityIndicator.swift b/RxExample/RxExample/Services/ActivityIndicator.swift index 5ea8062b..b74d1ce6 100644 --- a/RxExample/RxExample/Services/ActivityIndicator.swift +++ b/RxExample/RxExample/Services/ActivityIndicator.swift @@ -18,7 +18,7 @@ private struct ActivityToken : ObservableConvertibleType, Disposable { init(source: Observable, disposeAction: () -> ()) { _source = source - _dispose = AnonymousDisposable(disposeAction) + _dispose = Disposables.create(with: disposeAction) } func dispose() { diff --git a/RxExample/RxExample/Services/Wireframe.swift b/RxExample/RxExample/Services/Wireframe.swift index bb36e5fe..85fb4f76 100644 --- a/RxExample/RxExample/Services/Wireframe.swift +++ b/RxExample/RxExample/Services/Wireframe.swift @@ -71,7 +71,7 @@ class DefaultWireframe: Wireframe { DefaultWireframe.rootViewController().present(alertView, animated: true, completion: nil) - return AnonymousDisposable { + return Disposables.create { alertView.dismiss(animated:false, completion: nil) } } diff --git a/RxSwift/Disposables/AnonymousDisposable.swift b/RxSwift/Disposables/AnonymousDisposable.swift index 0ee7d18e..bf0a48b4 100644 --- a/RxSwift/Disposables/AnonymousDisposable.swift +++ b/RxSwift/Disposables/AnonymousDisposable.swift @@ -31,11 +31,18 @@ public final class AnonymousDisposable : DisposeBase, Cancelable { - parameter disposeAction: Disposal action which will be run upon calling `dispose`. */ + @available(*, deprecated, renamed: "Disposables.create") public init(_ disposeAction: DisposeAction) { _disposeAction = disposeAction super.init() } - + + // Non-deprecated version of the constructor, used by `Disposables.create(with:)` + private init(disposeAction: DisposeAction) { + _disposeAction = disposeAction + super.init() + } + /** Calls the disposal action if and only if the current instance hasn't been disposed yet. @@ -52,3 +59,16 @@ public final class AnonymousDisposable : DisposeBase, Cancelable { } } } + +public extension Disposables { + + /** + Constructs a new disposable with the given action used for disposal. + + - parameter dispose: Disposal action which will be run upon calling `dispose`. + */ + static func create(with dispose: () -> ()) -> Cancelable { + return AnonymousDisposable(disposeAction: dispose) + } + +} diff --git a/RxSwift/Disposables/BinaryDisposable.swift b/RxSwift/Disposables/BinaryDisposable.swift index 416d741f..1c597f49 100644 --- a/RxSwift/Disposables/BinaryDisposable.swift +++ b/RxSwift/Disposables/BinaryDisposable.swift @@ -11,7 +11,7 @@ import Foundation /** Represents two disposable resources that are disposed together. */ -final class BinaryDisposable : DisposeBase, Cancelable { +private final class BinaryDisposable : DisposeBase, Cancelable { private var _isDisposed: AtomicInt = 0 @@ -52,3 +52,14 @@ final class BinaryDisposable : DisposeBase, Cancelable { } } } + +public extension Disposables { + + /** + Creates a disposable with the given disposables. + */ + static func create(_ disposable1: Disposable, _ disposable2: Disposable) -> Cancelable { + return BinaryDisposable(disposable1, disposable2) + } + +} diff --git a/RxSwift/Disposables/BooleanDisposable.swift b/RxSwift/Disposables/BooleanDisposable.swift index a976aa43..2464a897 100644 --- a/RxSwift/Disposables/BooleanDisposable.swift +++ b/RxSwift/Disposables/BooleanDisposable.swift @@ -11,7 +11,7 @@ import Foundation /** Represents a disposable resource that can be checked for disposal status. */ -public class BooleanDisposable : Disposable, Cancelable { +public final class BooleanDisposable : Disposable, Cancelable { internal static let BooleanDisposableTrue = BooleanDisposable(isDisposed: true) private var _isDisposed = false diff --git a/RxSwift/Disposables/CompositeDisposable.swift b/RxSwift/Disposables/CompositeDisposable.swift index 43782262..a7e4b5b2 100644 --- a/RxSwift/Disposables/CompositeDisposable.swift +++ b/RxSwift/Disposables/CompositeDisposable.swift @@ -11,7 +11,7 @@ import Foundation /** Represents a group of disposable resources that are disposed together. */ -public class CompositeDisposable : DisposeBase, Disposable, Cancelable { +public final class CompositeDisposable : DisposeBase, Disposable, Cancelable { public typealias DisposeKey = Bag.KeyType private var _lock = SpinLock() diff --git a/RxSwift/Disposables/Disposables.swift b/RxSwift/Disposables/Disposables.swift new file mode 100644 index 00000000..694b1e5f --- /dev/null +++ b/RxSwift/Disposables/Disposables.swift @@ -0,0 +1,61 @@ +// +// Disposables.swift +// Rx +// +// Created by Mohsen Ramezanpoor on 01/08/2016. +// Copyright © 2016 Mohsen Ramezanpoor. All rights reserved. +// + +import Foundation + +/** + A collection of utility methods for common disposable operations. + */ +public struct Disposables { + + private init() {} + +} + +public extension Disposables { + + private static let noOp: Disposable = NopDisposable() + + /** + Creates a disposable that does nothing on disposal. + */ + static func create() -> Disposable { + return noOp + } + + /** + Creates a disposable with the given disposables. + */ + static func create(_ disposable1: Disposable, _ disposable2: Disposable, _ disposable3: Disposable) -> Cancelable { + return CompositeDisposable(disposable1, disposable2, disposable3) + } + + /** + Creates a disposable with the given disposables. + */ + static func create(_ disposable1: Disposable, _ disposable2: Disposable, _ disposable3: Disposable, _ disposables: Disposable ...) -> Cancelable { + var disposables = disposables + disposables.append(disposable1) + disposables.append(disposable2) + disposables.append(disposable3) + return CompositeDisposable(disposables: disposables) + } + + /** + Creates a disposable with the given disposables. + */ + static func create(_ disposables: [Disposable]) -> Cancelable { + switch disposables.count { + case 2: + return Disposables.create(disposables[0], disposables[1]) + default: + return CompositeDisposable(disposables: disposables) + } + } + +} diff --git a/RxSwift/Disposables/DisposeBag.swift b/RxSwift/Disposables/DisposeBag.swift index 2c7b6646..34a3b0c5 100644 --- a/RxSwift/Disposables/DisposeBag.swift +++ b/RxSwift/Disposables/DisposeBag.swift @@ -31,7 +31,7 @@ or create a new one in its place. In case explicit disposal is necessary, there is also `CompositeDisposable`. */ -public class DisposeBag: DisposeBase { +public final class DisposeBag: DisposeBase { private var _lock = SpinLock() diff --git a/RxSwift/Disposables/NAryDisposable.swift b/RxSwift/Disposables/NAryDisposable.swift deleted file mode 100644 index b39cd98b..00000000 --- a/RxSwift/Disposables/NAryDisposable.swift +++ /dev/null @@ -1,10 +0,0 @@ -// This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project -// -// NAryDisposable.swift -// RxSwift -// -// Created by Krunoslav Zaher on 8/20/15. -// Copyright © 2015 Krunoslav Zaher. All rights reserved. -// - -import Foundation diff --git a/RxSwift/Disposables/NAryDisposable.tt b/RxSwift/Disposables/NAryDisposable.tt deleted file mode 100644 index 7128cddb..00000000 --- a/RxSwift/Disposables/NAryDisposable.tt +++ /dev/null @@ -1,9 +0,0 @@ -// -// NAryDisposable.swift -// RxSwift -// -// Created by Krunoslav Zaher on 8/20/15. -// Copyright © 2015 Krunoslav Zaher. All rights reserved. -// - -import Foundation diff --git a/RxSwift/Disposables/NopDisposable.swift b/RxSwift/Disposables/NopDisposable.swift index fe8a0c73..5004311d 100644 --- a/RxSwift/Disposables/NopDisposable.swift +++ b/RxSwift/Disposables/NopDisposable.swift @@ -18,6 +18,7 @@ public struct NopDisposable : Disposable { /** Singleton instance of `NopDisposable`. */ + @available(*, deprecated, renamed: "Disposables.empty()") public static let instance: Disposable = NopDisposable() init() { @@ -29,4 +30,4 @@ public struct NopDisposable : Disposable { */ public func dispose() { } -} \ No newline at end of file +} diff --git a/RxSwift/Disposables/RefCountDisposable.swift b/RxSwift/Disposables/RefCountDisposable.swift index ff299bcc..b2c22a51 100644 --- a/RxSwift/Disposables/RefCountDisposable.swift +++ b/RxSwift/Disposables/RefCountDisposable.swift @@ -11,7 +11,7 @@ import Foundation /** Represents a disposable resource that only disposes its underlying disposable resource when all dependent disposable objects have been disposed. */ -public class RefCountDisposable : DisposeBase, Cancelable { +public final class RefCountDisposable : DisposeBase, Cancelable { private var _lock = SpinLock() private var _disposable = nil as Disposable? private var _primaryDisposed = false @@ -50,7 +50,7 @@ public class RefCountDisposable : DisposeBase, Cancelable { return RefCountInnerDisposable(self) } else { - return NopDisposable.instance + return Disposables.create() } } } diff --git a/RxSwift/Disposables/ScheduledDisposable.swift b/RxSwift/Disposables/ScheduledDisposable.swift index 5c7b08fc..d2f80a09 100644 --- a/RxSwift/Disposables/ScheduledDisposable.swift +++ b/RxSwift/Disposables/ScheduledDisposable.swift @@ -10,13 +10,13 @@ import Foundation private let disposeScheduledDisposable: (ScheduledDisposable) -> Disposable = { sd in sd.disposeInner() - return NopDisposable.instance + return Disposables.create() } /** Represents a disposable resource whose disposal invocation will be scheduled on the specified scheduler. */ -public class ScheduledDisposable : Cancelable { +public final class ScheduledDisposable : Cancelable { public let scheduler: ImmediateSchedulerType private var _isDisposed: AtomicInt = 0 diff --git a/RxSwift/Disposables/SerialDisposable.swift b/RxSwift/Disposables/SerialDisposable.swift index ff1f40b6..8aa355c4 100644 --- a/RxSwift/Disposables/SerialDisposable.swift +++ b/RxSwift/Disposables/SerialDisposable.swift @@ -11,7 +11,7 @@ import Foundation /** Represents a disposable resource whose underlying disposable resource can be replaced by another disposable resource, causing automatic disposal of the previous underlying disposable resource. */ -public class SerialDisposable : DisposeBase, Cancelable { +public final class SerialDisposable : DisposeBase, Cancelable { private var _lock = SpinLock() // state diff --git a/RxSwift/Disposables/SingleAssignmentDisposable.swift b/RxSwift/Disposables/SingleAssignmentDisposable.swift index 392b8f27..56f45d70 100644 --- a/RxSwift/Disposables/SingleAssignmentDisposable.swift +++ b/RxSwift/Disposables/SingleAssignmentDisposable.swift @@ -43,7 +43,7 @@ public class SingleAssignmentDisposable : DisposeBase, Disposable, Cancelable { public var disposable: Disposable { get { _lock.lock(); defer { _lock.unlock() } - return _disposable ?? NopDisposable.instance + return _disposable ?? Disposables.create() } set { _setDisposable(newValue)?.dispose() diff --git a/RxSwift/Disposables/StableCompositeDisposable.swift b/RxSwift/Disposables/StableCompositeDisposable.swift index 7098867c..ad10eacc 100644 --- a/RxSwift/Disposables/StableCompositeDisposable.swift +++ b/RxSwift/Disposables/StableCompositeDisposable.swift @@ -9,7 +9,8 @@ import Foundation public final class StableCompositeDisposable { + @available(*, deprecated, renamed: "Disposables.create") public static func create(_ disposable1: Disposable, _ disposable2: Disposable) -> Disposable { - return BinaryDisposable(disposable1, disposable2) + return Disposables.create(disposable1, disposable2) } -} \ No newline at end of file +} diff --git a/RxSwift/ImmediateSchedulerType.swift b/RxSwift/ImmediateSchedulerType.swift index 536c6d45..a12e241d 100644 --- a/RxSwift/ImmediateSchedulerType.swift +++ b/RxSwift/ImmediateSchedulerType.swift @@ -35,6 +35,6 @@ extension ImmediateSchedulerType { recursiveScheduler.schedule(state) - return AnonymousDisposable(recursiveScheduler.dispose) + return Disposables.create(with: recursiveScheduler.dispose) } } diff --git a/RxSwift/ObservableType+Extensions.swift b/RxSwift/ObservableType+Extensions.swift index ead7ba0d..87f6a3f5 100644 --- a/RxSwift/ObservableType+Extensions.swift +++ b/RxSwift/ObservableType+Extensions.swift @@ -42,10 +42,10 @@ extension ObservableType { let disposable: Disposable if let disposed = onDisposed { - disposable = AnonymousDisposable(disposed) + disposable = Disposables.create(with: disposed) } else { - disposable = NopDisposable.instance + disposable = Disposables.create() } let observer = AnonymousObserver { e in @@ -65,7 +65,7 @@ extension ObservableType { disposable.dispose() } } - return BinaryDisposable( + return Disposables.create( self.subscribeSafe(observer), disposable ) @@ -88,10 +88,10 @@ extension ObservableType { let disposable: Disposable if let disposed = onDisposed { - disposable = AnonymousDisposable(disposed) + disposable = Disposables.create(with: disposed) } else { - disposable = NopDisposable.instance + disposable = Disposables.create() } let observer = AnonymousObserver { e in @@ -106,7 +106,7 @@ extension ObservableType { disposable.dispose() } } - return BinaryDisposable( + return Disposables.create( self.subscribeSafe(observer), disposable ) diff --git a/RxSwift/Observables/Implementations/AddRef.swift b/RxSwift/Observables/Implementations/AddRef.swift index 25671285..44b7f079 100644 --- a/RxSwift/Observables/Implementations/AddRef.swift +++ b/RxSwift/Observables/Implementations/AddRef.swift @@ -40,7 +40,7 @@ class AddRef : Producer { override func run(_ observer: O) -> Disposable { let releaseDisposable = _refCount.retain() let sink = AddRefSink(observer: observer) - sink.disposable = StableCompositeDisposable.create(releaseDisposable, _source.subscribeSafe(sink)) + sink.disposable = Disposables.create(releaseDisposable, _source.subscribeSafe(sink)) return sink } diff --git a/RxSwift/Observables/Implementations/Amb.swift b/RxSwift/Observables/Implementations/Amb.swift index 9ea6d8d3..7e85093d 100644 --- a/RxSwift/Observables/Implementations/Amb.swift +++ b/RxSwift/Observables/Implementations/Amb.swift @@ -66,7 +66,7 @@ class AmbSink : Sink { func run() -> Disposable { let subscription1 = SingleAssignmentDisposable() let subscription2 = SingleAssignmentDisposable() - let disposeAll = StableCompositeDisposable.create(subscription1, subscription2) + let disposeAll = Disposables.create(subscription1, subscription2) let forwardEvent = { (o: AmbObserverType, event: Event) -> Void in self.forwardOn(event) diff --git a/RxSwift/Observables/Implementations/Buffer.swift b/RxSwift/Observables/Implementations/Buffer.swift index c2a4c822..76128de8 100644 --- a/RxSwift/Observables/Implementations/Buffer.swift +++ b/RxSwift/Observables/Implementations/Buffer.swift @@ -53,7 +53,7 @@ class BufferTimeCountSink func run() -> Disposable { createTimer(_windowID) - return StableCompositeDisposable.create(_timerD, _parent._source.subscribe(self)) + return Disposables.create(_timerD, _parent._source.subscribe(self)) } func startNewWindowAndSendCurrentOne() { @@ -113,7 +113,7 @@ class BufferTimeCountSink self.startNewWindowAndSendCurrentOne() } - return NopDisposable.instance + return Disposables.create() } } } diff --git a/RxSwift/Observables/Implementations/CombineLatest+CollectionType.swift b/RxSwift/Observables/Implementations/CombineLatest+CollectionType.swift index fb5754ce..d4212fa8 100644 --- a/RxSwift/Observables/Implementations/CombineLatest+CollectionType.swift +++ b/RxSwift/Observables/Implementations/CombineLatest+CollectionType.swift @@ -100,7 +100,7 @@ class CombineLatestCollectionTypeSink : CombineLatestSink { subscription1.disposable = _parent._source1.subscribe(observer1) subscription2.disposable = _parent._source2.subscribe(observer2) - return CompositeDisposable(disposables: [ + return Disposables.create([ subscription1, subscription2 ]) @@ -142,7 +142,7 @@ class CombineLatestSink3_ : CombineLatestSink { subscription2.disposable = _parent._source2.subscribe(observer2) subscription3.disposable = _parent._source3.subscribe(observer3) - return CompositeDisposable(disposables: [ + return Disposables.create([ subscription1, subscription2, subscription3 @@ -234,7 +234,7 @@ class CombineLatestSink4_ : CombineLatestSink : CombineLatestSi subscription4.disposable = _parent._source4.subscribe(observer4) subscription5.disposable = _parent._source5.subscribe(observer5) - return CompositeDisposable(disposables: [ + return Disposables.create([ subscription1, subscription2, subscription3, @@ -439,7 +439,7 @@ class CombineLatestSink6_ : CombineLate subscription5.disposable = _parent._source5.subscribe(observer5) subscription6.disposable = _parent._source6.subscribe(observer6) - return CompositeDisposable(disposables: [ + return Disposables.create([ subscription1, subscription2, subscription3, @@ -552,7 +552,7 @@ class CombineLatestSink7_ : Combine subscription6.disposable = _parent._source6.subscribe(observer6) subscription7.disposable = _parent._source7.subscribe(observer7) - return CompositeDisposable(disposables: [ + return Disposables.create([ subscription1, subscription2, subscription3, @@ -672,7 +672,7 @@ class CombineLatestSink8_ : Com subscription7.disposable = _parent._source7.subscribe(observer7) subscription8.disposable = _parent._source8.subscribe(observer8) - return CompositeDisposable(disposables: [ + return Disposables.create([ subscription1, subscription2, subscription3, diff --git a/RxSwift/Observables/Implementations/CombineLatest+arity.tt b/RxSwift/Observables/Implementations/CombineLatest+arity.tt index 437384c9..624a241e 100644 --- a/RxSwift/Observables/Implementations/CombineLatest+arity.tt +++ b/RxSwift/Observables/Implementations/CombineLatest+arity.tt @@ -60,7 +60,7 @@ class CombineLatestSink<%= i %>_<<%= (Array(1...i).map { "E\($0)" }).joined(sepa " subscription\($0).disposable = _parent._source\($0).subscribe(observer\($0))" }).joined(separator: "\n") %> - return CompositeDisposable(disposables: [ + return Disposables.create([ <%= (Array(1...i).map { " subscription\($0)" }).joined(separator: ",\n") %> ]) } diff --git a/RxSwift/Observables/Implementations/Deferred.swift b/RxSwift/Observables/Implementations/Deferred.swift index bbcf8cda..bea825c3 100644 --- a/RxSwift/Observables/Implementations/Deferred.swift +++ b/RxSwift/Observables/Implementations/Deferred.swift @@ -26,7 +26,7 @@ class DeferredSink : Sink : Producer { override func subscribe(_ observer: O) -> Disposable { observer.on(.completed) - return NopDisposable.instance + return Disposables.create() } } diff --git a/RxSwift/Observables/Implementations/Error.swift b/RxSwift/Observables/Implementations/Error.swift index e1322c35..42484cab 100644 --- a/RxSwift/Observables/Implementations/Error.swift +++ b/RxSwift/Observables/Implementations/Error.swift @@ -17,6 +17,6 @@ class Error : Producer { override func subscribe(_ observer: O) -> Disposable { observer.on(.error(_error)) - return NopDisposable.instance + return Disposables.create() } } diff --git a/RxSwift/Observables/Implementations/Just.swift b/RxSwift/Observables/Implementations/Just.swift index 256446ae..b8dcce7b 100644 --- a/RxSwift/Observables/Implementations/Just.swift +++ b/RxSwift/Observables/Implementations/Just.swift @@ -24,7 +24,7 @@ class JustScheduledSink : Sink { self.forwardOn(.next(element)) return scheduler.schedule(()) { _ in self.forwardOn(.completed) - return NopDisposable.instance + return Disposables.create() } } } @@ -56,6 +56,6 @@ class Just : Producer { override func subscribe(_ observer: O) -> Disposable { observer.on(.next(_element)) observer.on(.completed) - return NopDisposable.instance + return Disposables.create() } } diff --git a/RxSwift/Observables/Implementations/Multicast.swift b/RxSwift/Observables/Implementations/Multicast.swift index 2ce88e09..dbdec380 100644 --- a/RxSwift/Observables/Implementations/Multicast.swift +++ b/RxSwift/Observables/Implementations/Multicast.swift @@ -30,12 +30,12 @@ class MulticastSink: Sink, ObserverType { let subscription = observable.subscribe(self) let connection = connectable.connect() - return BinaryDisposable(subscription, connection) + return Disposables.create(subscription, connection) } catch let e { forwardOn(.error(e)) dispose() - return NopDisposable.instance + return Disposables.create() } } diff --git a/RxSwift/Observables/Implementations/Never.swift b/RxSwift/Observables/Implementations/Never.swift index 60ed522a..e0ac7d8f 100644 --- a/RxSwift/Observables/Implementations/Never.swift +++ b/RxSwift/Observables/Implementations/Never.swift @@ -10,6 +10,6 @@ import Foundation class Never : Producer { override func subscribe(_ observer: O) -> Disposable { - return NopDisposable.instance + return Disposables.create() } } diff --git a/RxSwift/Observables/Implementations/ObserveOnSerialDispatchQueue.swift b/RxSwift/Observables/Implementations/ObserveOnSerialDispatchQueue.swift index fa6a89a0..4d352525 100644 --- a/RxSwift/Observables/Implementations/ObserveOnSerialDispatchQueue.swift +++ b/RxSwift/Observables/Implementations/ObserveOnSerialDispatchQueue.swift @@ -37,7 +37,7 @@ class ObserveOnSerialDispatchQueueSink : ObserverBase { sink.dispose() } - return NopDisposable.instance + return Disposables.create() } } diff --git a/RxSwift/Observables/Implementations/RefCount.swift b/RxSwift/Observables/Implementations/RefCount.swift index d482f488..7ba86272 100644 --- a/RxSwift/Observables/Implementations/RefCount.swift +++ b/RxSwift/Observables/Implementations/RefCount.swift @@ -34,7 +34,7 @@ class RefCountSink Disposable { let triggerSubscription = _handler.subscribe(_notifier.asObserver()) let superSubscription = super.run(sources) - return StableCompositeDisposable.create(superSubscription, triggerSubscription) + return Disposables.create(superSubscription, triggerSubscription) } } diff --git a/RxSwift/Observables/Implementations/Sample.swift b/RxSwift/Observables/Implementations/Sample.swift index 4906552d..33f3f407 100644 --- a/RxSwift/Observables/Implementations/Sample.swift +++ b/RxSwift/Observables/Implementations/Sample.swift @@ -88,7 +88,7 @@ class SampleSequenceSink _sourceSubscription.disposable = _parent._source.subscribe(self) let samplerSubscription = _parent._sampler.subscribe(SamplerSink(parent: self)) - return StableCompositeDisposable.create(_sourceSubscription, samplerSubscription) + return Disposables.create(_sourceSubscription, samplerSubscription) } func on(_ event: Event) { diff --git a/RxSwift/Observables/Implementations/ShareReplay1.swift b/RxSwift/Observables/Implementations/ShareReplay1.swift index 1df1fe57..23853a9f 100644 --- a/RxSwift/Observables/Implementations/ShareReplay1.swift +++ b/RxSwift/Observables/Implementations/ShareReplay1.swift @@ -42,7 +42,7 @@ final class ShareReplay1 if let stopEvent = self._stopEvent { observer.on(stopEvent) - return NopDisposable.instance + return Disposables.create() } let initialCount = self._observers.count diff --git a/RxSwift/Observables/Implementations/Skip.swift b/RxSwift/Observables/Implementations/Skip.swift index 232d045a..9d13c5e4 100644 --- a/RxSwift/Observables/Implementations/Skip.swift +++ b/RxSwift/Observables/Implementations/Skip.swift @@ -100,12 +100,12 @@ class SkipTimeSink : Sink func run() -> Disposable { let disposeTimer = parent.scheduler.scheduleRelative((), dueTime: self.parent.duration) { self.tick() - return NopDisposable.instance + return Disposables.create() } let disposeSubscription = parent.source.subscribe(self) - return BinaryDisposable(disposeTimer, disposeSubscription) + return Disposables.create(disposeTimer, disposeSubscription) } } diff --git a/RxSwift/Observables/Implementations/SkipUntil.swift b/RxSwift/Observables/Implementations/SkipUntil.swift index ae59b7e9..43122869 100644 --- a/RxSwift/Observables/Implementations/SkipUntil.swift +++ b/RxSwift/Observables/Implementations/SkipUntil.swift @@ -103,7 +103,7 @@ class SkipUntilSink : S cancelSchedule.disposable = parent.scheduler.schedule(()) { (_) -> Disposable in let subscription = self.parent.source.subscribe(self) disposeEverything.disposable = ScheduledDisposable(scheduler: self.parent.scheduler, disposable: subscription) - return NopDisposable.instance + return Disposables.create() } return disposeEverything diff --git a/RxSwift/Observables/Implementations/Switch.swift b/RxSwift/Observables/Implementations/Switch.swift index 5445ee38..b79dd142 100644 --- a/RxSwift/Observables/Implementations/Switch.swift +++ b/RxSwift/Observables/Implementations/Switch.swift @@ -32,7 +32,7 @@ class SwitchSink) -> Disposable { let subscription = source.subscribe(self) _subscriptions.disposable = subscription - return StableCompositeDisposable.create(_subscriptions, _innerSubscription) + return Disposables.create(_subscriptions, _innerSubscription) } func on(_ event: Event) { diff --git a/RxSwift/Observables/Implementations/Take.swift b/RxSwift/Observables/Implementations/Take.swift index 4bd6908a..6e8d9d4b 100644 --- a/RxSwift/Observables/Implementations/Take.swift +++ b/RxSwift/Observables/Implementations/Take.swift @@ -114,12 +114,12 @@ class TakeTimeSink func run() -> Disposable { let disposeTimer = _parent._scheduler.scheduleRelative((), dueTime: _parent._duration) { self.tick() - return NopDisposable.instance + return Disposables.create() } let disposeSubscription = _parent._source.subscribe(self) - return BinaryDisposable(disposeTimer, disposeSubscription) + return Disposables.create(disposeTimer, disposeSubscription) } } diff --git a/RxSwift/Observables/Implementations/TakeUntil.swift b/RxSwift/Observables/Implementations/TakeUntil.swift index d59fc8f1..dab392d4 100644 --- a/RxSwift/Observables/Implementations/TakeUntil.swift +++ b/RxSwift/Observables/Implementations/TakeUntil.swift @@ -98,7 +98,7 @@ class TakeUntilSink func run() -> Disposable { let subscription = _parent._source.subscribe(self) - return StableCompositeDisposable.create(subscription, cancellable) + return Disposables.create(subscription, cancellable) } func on(_ event: Event) { @@ -79,7 +79,7 @@ class ThrottleSink forwardOn(.next(value)) } // } - return NopDisposable.instance + return Disposables.create() } } diff --git a/RxSwift/Observables/Implementations/Timeout.swift b/RxSwift/Observables/Implementations/Timeout.swift index 301cd576..26531b41 100644 --- a/RxSwift/Observables/Implementations/Timeout.swift +++ b/RxSwift/Observables/Implementations/Timeout.swift @@ -35,7 +35,7 @@ class TimeoutSink: Sink) { @@ -92,7 +92,7 @@ class TimeoutSink: Sink : Sink { self.forwardOn(.next(0)) self.forwardOn(.completed) - return NopDisposable.instance + return Disposables.create() } } } diff --git a/RxSwift/Observables/Implementations/Using.swift b/RxSwift/Observables/Implementations/Using.swift index 2252717c..11c2f254 100644 --- a/RxSwift/Observables/Implementations/Using.swift +++ b/RxSwift/Observables/Implementations/Using.swift @@ -21,19 +21,19 @@ class UsingSink Disposable { - var disposable = NopDisposable.instance + var disposable = Disposables.create() do { let resource = try _parent._resourceFactory() disposable = resource let source = try _parent._observableFactory(resource) - return StableCompositeDisposable.create( + return Disposables.create( source.subscribe(self), disposable ) } catch let error { - return StableCompositeDisposable.create( + return Disposables.create( Observable.error(error).subscribe(self), disposable ) diff --git a/RxSwift/Observables/Implementations/Window.swift b/RxSwift/Observables/Implementations/Window.swift index 320dcda9..09deb542 100644 --- a/RxSwift/Observables/Implementations/Window.swift +++ b/RxSwift/Observables/Implementations/Window.swift @@ -125,7 +125,7 @@ class WindowTimeCountSink) { diff --git a/RxSwift/Observables/Implementations/Zip+CollectionType.swift b/RxSwift/Observables/Implementations/Zip+CollectionType.swift index 7c35a8a0..38d0cc4b 100644 --- a/RxSwift/Observables/Implementations/Zip+CollectionType.swift +++ b/RxSwift/Observables/Implementations/Zip+CollectionType.swift @@ -112,7 +112,7 @@ class ZipCollectionTypeSink : ZipSink { subscription1.disposable = _parent.source1.subscribe(observer1) subscription2.disposable = _parent.source2.subscribe(observer2) - return CompositeDisposable(disposables: [ + return Disposables.create([ subscription1, subscription2 ]) @@ -167,7 +167,7 @@ class ZipSink3_ : ZipSink { subscription2.disposable = _parent.source2.subscribe(observer2) subscription3.disposable = _parent.source3.subscribe(observer3) - return CompositeDisposable(disposables: [ + return Disposables.create([ subscription1, subscription2, subscription3 @@ -273,7 +273,7 @@ class ZipSink4_ : ZipSink { subscription3.disposable = _parent.source3.subscribe(observer3) subscription4.disposable = _parent.source4.subscribe(observer4) - return CompositeDisposable(disposables: [ + return Disposables.create([ subscription1, subscription2, subscription3, @@ -387,7 +387,7 @@ class ZipSink5_ : ZipSink { subscription4.disposable = _parent.source4.subscribe(observer4) subscription5.disposable = _parent.source5.subscribe(observer5) - return CompositeDisposable(disposables: [ + return Disposables.create([ subscription1, subscription2, subscription3, @@ -509,7 +509,7 @@ class ZipSink6_ : ZipSink { subscription5.disposable = _parent.source5.subscribe(observer5) subscription6.disposable = _parent.source6.subscribe(observer6) - return CompositeDisposable(disposables: [ + return Disposables.create([ subscription1, subscription2, subscription3, @@ -639,7 +639,7 @@ class ZipSink7_ : ZipSink { subscription6.disposable = _parent.source6.subscribe(observer6) subscription7.disposable = _parent.source7.subscribe(observer7) - return CompositeDisposable(disposables: [ + return Disposables.create([ subscription1, subscription2, subscription3, @@ -777,7 +777,7 @@ class ZipSink8_ : ZipSink { subscription7.disposable = _parent.source7.subscribe(observer7) subscription8.disposable = _parent.source8.subscribe(observer8) - return CompositeDisposable(disposables: [ + return Disposables.create([ subscription1, subscription2, subscription3, diff --git a/RxSwift/Observables/Implementations/Zip+arity.tt b/RxSwift/Observables/Implementations/Zip+arity.tt index 8e1e5e16..9af1dc7d 100644 --- a/RxSwift/Observables/Implementations/Zip+arity.tt +++ b/RxSwift/Observables/Implementations/Zip+arity.tt @@ -72,7 +72,7 @@ class ZipSink<%= i %>_<<%= (Array(1...i).map { "E\($0)" }).joined(separator: ", " subscription\($0).disposable = _parent.source\($0).subscribe(observer\($0))" }).joined(separator: "\n") %> - return CompositeDisposable(disposables: [ + return Disposables.create([ <%= (Array(1...i).map { " subscription\($0)" }).joined(separator: ",\n") %> ]) } diff --git a/RxSwift/SchedulerType.swift b/RxSwift/SchedulerType.swift index 5158bc51..b45e6e72 100644 --- a/RxSwift/SchedulerType.swift +++ b/RxSwift/SchedulerType.swift @@ -73,6 +73,6 @@ extension SchedulerType { scheduler.schedule(state, dueTime: dueTime) - return AnonymousDisposable(scheduler.dispose) + return Disposables.create(with: scheduler.dispose) } } diff --git a/RxSwift/Schedulers/CurrentThreadScheduler.swift b/RxSwift/Schedulers/CurrentThreadScheduler.swift index e56ba048..4558b4cb 100644 --- a/RxSwift/Schedulers/CurrentThreadScheduler.swift +++ b/RxSwift/Schedulers/CurrentThreadScheduler.swift @@ -145,6 +145,6 @@ public class CurrentThreadScheduler : ImmediateSchedulerType { // In Xcode 7.3, `return scheduledItem` causes segmentation fault 11 on release build. // To workaround this compiler issue, returns AnonymousDisposable that disposes scheduledItem. - return AnonymousDisposable(scheduledItem.dispose) + return Disposables.create(with: scheduledItem.dispose) } } diff --git a/RxSwift/Schedulers/Internal/DispatchQueueConfiguration.swift b/RxSwift/Schedulers/Internal/DispatchQueueConfiguration.swift index 87ffae3a..061b6c7c 100644 --- a/RxSwift/Schedulers/Internal/DispatchQueueConfiguration.swift +++ b/RxSwift/Schedulers/Internal/DispatchQueueConfiguration.swift @@ -51,7 +51,7 @@ extension DispatchQueueConfiguration { // It looks like just setting timer to fire and not holding a reference to it // until deadline causes timer cancellation. var timerReference: DispatchSourceTimer? = timer - let cancelTimer = AnonymousDisposable { + let cancelTimer = Disposables.create { timerReference?.cancel() timerReference = nil } @@ -85,7 +85,7 @@ extension DispatchQueueConfiguration { // It looks like just setting timer to fire and not holding a reference to it // until deadline causes timer cancellation. var timerReference: DispatchSourceTimer? = timer - let cancelTimer = AnonymousDisposable { + let cancelTimer = Disposables.create { timerReference?.cancel() timerReference = nil } diff --git a/RxSwift/Schedulers/OperationQueueScheduler.swift b/RxSwift/Schedulers/OperationQueueScheduler.swift index b20f3504..6c979393 100644 --- a/RxSwift/Schedulers/OperationQueueScheduler.swift +++ b/RxSwift/Schedulers/OperationQueueScheduler.swift @@ -49,7 +49,7 @@ public class OperationQueueScheduler: ImmediateSchedulerType { self.operationQueue.addOperation(operation) - let _ = compositeDisposable.insert(AnonymousDisposable(operation.cancel)) + let _ = compositeDisposable.insert(Disposables.create(with: operation.cancel)) return compositeDisposable } diff --git a/RxSwift/Schedulers/RecursiveScheduler.swift b/RxSwift/Schedulers/RecursiveScheduler.swift index 36191f6d..fad09306 100644 --- a/RxSwift/Schedulers/RecursiveScheduler.swift +++ b/RxSwift/Schedulers/RecursiveScheduler.swift @@ -42,7 +42,7 @@ class AnyRecursiveScheduler { let d = _scheduler.scheduleRelative(state, dueTime: dueTime) { (state) -> Disposable in // best effort if self._group.isDisposed { - return NopDisposable.instance + return Disposables.create() } let action = self._lock.calculateLocked { () -> Action? in @@ -60,7 +60,7 @@ class AnyRecursiveScheduler { action(state: state, scheduler: self) } - return NopDisposable.instance + return Disposables.create() } _lock.performLocked { @@ -85,7 +85,7 @@ class AnyRecursiveScheduler { let d = _scheduler.schedule(state) { (state) -> Disposable in // best effort if self._group.isDisposed { - return NopDisposable.instance + return Disposables.create() } let action = self._lock.calculateLocked { () -> Action? in @@ -103,7 +103,7 @@ class AnyRecursiveScheduler { action(state: state, scheduler: self) } - return NopDisposable.instance + return Disposables.create() } _lock.performLocked { @@ -155,7 +155,7 @@ class RecursiveImmediateScheduler { let d = _scheduler.schedule(state) { (state) -> Disposable in // best effort if self._group.isDisposed { - return NopDisposable.instance + return Disposables.create() } let action = self._lock.calculateLocked { () -> Action? in @@ -173,7 +173,7 @@ class RecursiveImmediateScheduler { action(state: state, recurse: self.schedule) } - return NopDisposable.instance + return Disposables.create() } _lock.performLocked { diff --git a/RxSwift/Subjects/BehaviorSubject.swift b/RxSwift/Subjects/BehaviorSubject.swift index 3f7bbdd4..a8191eb8 100644 --- a/RxSwift/Subjects/BehaviorSubject.swift +++ b/RxSwift/Subjects/BehaviorSubject.swift @@ -114,12 +114,12 @@ public final class BehaviorSubject func _synchronized_subscribe(_ observer: O) -> Disposable { if _isDisposed { observer.on(.error(RxError.disposed(object: self))) - return NopDisposable.instance + return Disposables.create() } if let stoppedEvent = _stoppedEvent { observer.on(stoppedEvent) - return NopDisposable.instance + return Disposables.create() } let key = _observers.insert(observer.asObserver()) diff --git a/RxSwift/Subjects/PublishSubject.swift b/RxSwift/Subjects/PublishSubject.swift index 914f745c..aaeb74d1 100644 --- a/RxSwift/Subjects/PublishSubject.swift +++ b/RxSwift/Subjects/PublishSubject.swift @@ -95,12 +95,12 @@ final public class PublishSubject func _synchronized_subscribe(_ observer: O) -> Disposable { if let stoppedEvent = _stoppedEvent { observer.on(stoppedEvent) - return NopDisposable.instance + return Disposables.create() } if _isDisposed { observer.on(.error(RxError.disposed(object: self))) - return NopDisposable.instance + return Disposables.create() } let key = _observers.insert(observer.asObserver()) diff --git a/RxSwift/Subjects/ReplaySubject.swift b/RxSwift/Subjects/ReplaySubject.swift index 566b97fc..91a7a230 100644 --- a/RxSwift/Subjects/ReplaySubject.swift +++ b/RxSwift/Subjects/ReplaySubject.swift @@ -139,7 +139,7 @@ class ReplayBufferBase func _synchronized_subscribe(_ observer: O) -> Disposable { if _isDisposed { observer.on(.error(RxError.disposed(object: self))) - return NopDisposable.instance + return Disposables.create() } let AnyObserver = observer.asObserver() @@ -147,7 +147,7 @@ class ReplayBufferBase replayBuffer(AnyObserver) if let stoppedEvent = _stoppedEvent { observer.on(stoppedEvent) - return NopDisposable.instance + return Disposables.create() } else { let key = _observers.insert(AnyObserver) diff --git a/RxTests/ColdObservable.swift b/RxTests/ColdObservable.swift index 647b21f2..6fe0f31d 100644 --- a/RxTests/ColdObservable.swift +++ b/RxTests/ColdObservable.swift @@ -33,11 +33,11 @@ class ColdObservable for recordedEvent in recordedEvents { _ = testScheduler.scheduleRelativeVirtual((), dueTime: recordedEvent.time, action: { (_) in observer.on(recordedEvent.value) - return NopDisposable.instance + return Disposables.create() }) } - return AnonymousDisposable { + return Disposables.create { let existing = self.subscriptions[i] self.subscriptions[i] = Subscription(existing.subscribe, self.testScheduler.clock) } diff --git a/RxTests/HotObservable.swift b/RxTests/HotObservable.swift index 036bde2d..d5f42eeb 100644 --- a/RxTests/HotObservable.swift +++ b/RxTests/HotObservable.swift @@ -46,7 +46,7 @@ class HotObservable let i = self.subscriptions.count - 1 - return AnonymousDisposable { + return Disposables.create { let removed = self._observers.removeKey(key) assert(removed != nil) diff --git a/RxTests/Schedulers/TestScheduler.swift b/RxTests/Schedulers/TestScheduler.swift index 5a9e4441..f5d3535a 100644 --- a/RxTests/Schedulers/TestScheduler.swift +++ b/RxTests/Schedulers/TestScheduler.swift @@ -84,7 +84,7 @@ public class TestScheduler : VirtualTimeScheduler Void) { _ = self.scheduleAbsoluteVirtual((), time: time, action: { () -> Disposable in action() - return NopDisposable.instance + return Disposables.create() }) } @@ -111,17 +111,17 @@ public class TestScheduler : VirtualTimeScheduler(_ createControl: () -> C, _ eventSelector: (C) -> ControlEvent) { - return ensureEventDeallocated({ () -> (C, Disposable) in (createControl(), NopDisposable.instance) }, eventSelector) + return ensureEventDeallocated({ () -> (C, Disposable) in (createControl(), Disposables.create()) }, eventSelector) } func ensureEventDeallocated(_ createControl: () -> (C, Disposable), _ eventSelector: (C) -> ControlEvent) { diff --git a/Tests/RxCocoaTests/SentMessageTest.swift b/Tests/RxCocoaTests/SentMessageTest.swift index 39575eba..6b20eae4 100644 --- a/Tests/RxCocoaTests/SentMessageTest.swift +++ b/Tests/RxCocoaTests/SentMessageTest.swift @@ -1063,7 +1063,7 @@ extension SentMessageTest { let t = T.createInstance() //let disposable = (t as! NSObject).rx_observe(NSArray.self, "messages").publish().connect() (t as! NSObject).addObserver(self, forKeyPath: "messages", options: [], context: nil) - return (t, [AnonymousDisposable { (t as! NSObject).removeObserver(self, forKeyPath: "messages") }]) + return (t, [Disposables.create { (t as! NSObject).removeObserver(self, forKeyPath: "messages") }]) } } diff --git a/Tests/RxSwiftTests/TestImplementations/Mocks/MySubject.swift b/Tests/RxSwiftTests/TestImplementations/Mocks/MySubject.swift index 75cf69a7..c2baf761 100644 --- a/Tests/RxSwiftTests/TestImplementations/Mocks/MySubject.swift +++ b/Tests/RxSwiftTests/TestImplementations/Mocks/MySubject.swift @@ -45,7 +45,7 @@ class MySubject : SubjectType, ObserverType { _subscribeCount += 1 _observer = AnyObserver(observer) - return AnonymousDisposable { + return Disposables.create { self._observer = AnyObserver { _ -> Void in () } self._isDisposed = true } diff --git a/Tests/RxSwiftTests/TestImplementations/Mocks/PrimitiveHotObservable.swift b/Tests/RxSwiftTests/TestImplementations/Mocks/PrimitiveHotObservable.swift index af5f47db..e5b57c96 100644 --- a/Tests/RxSwiftTests/TestImplementations/Mocks/PrimitiveHotObservable.swift +++ b/Tests/RxSwiftTests/TestImplementations/Mocks/PrimitiveHotObservable.swift @@ -44,7 +44,7 @@ class PrimitiveHotObservable : ObservableType { let i = self.subscriptions.count - 1 - return AnonymousDisposable { + return Disposables.create { self.lock.lock() defer { self.lock.unlock() } diff --git a/Tests/RxSwiftTests/Tests/AnonymousObservable+Test.swift b/Tests/RxSwiftTests/Tests/AnonymousObservable+Test.swift index 82059332..dbe92c71 100644 --- a/Tests/RxSwiftTests/Tests/AnonymousObservable+Test.swift +++ b/Tests/RxSwiftTests/Tests/AnonymousObservable+Test.swift @@ -19,7 +19,7 @@ extension AnonymousObservableTests { var observer: AnyObserver! let a = Observable.create { o in observer = o - return NopDisposable.instance + return Disposables.create() } as Observable var elements = [Int]() @@ -43,7 +43,7 @@ extension AnonymousObservableTests { var observer: AnyObserver! let a = Observable.create { o in observer = o - return NopDisposable.instance + return Disposables.create() } as Observable var elements = [Int]() @@ -67,7 +67,7 @@ extension AnonymousObservableTests { var observer: AnyObserver! let a = Observable.create { o in observer = o - return NopDisposable.instance + return Disposables.create() } as Observable var elements = [Int]() diff --git a/Tests/RxSwiftTests/Tests/BagTest.swift b/Tests/RxSwiftTests/Tests/BagTest.swift index a4a16b48..f36c22e5 100644 --- a/Tests/RxSwiftTests/Tests/BagTest.swift +++ b/Tests/RxSwiftTests/Tests/BagTest.swift @@ -56,7 +56,7 @@ extension BagTest { ) numberOfActionsAfter(i, deletionsFromStart: j, - createNew: { () -> Disposable in AnonymousDisposable { numberDisposables += 1 } }, + createNew: { () -> Disposable in Disposables.create { numberDisposables += 1 } }, bagAction: { (bag: RxMutableBox>) in disposeAll(in: bag.value); XCTAssertTrue(bag.value.count == i - j) } ) @@ -103,7 +103,7 @@ extension BagTest { ) numberOfActionsAfter(i, deletionsFromStart: j, - createNew: { () -> Disposable in AnonymousDisposable { numberDisposables += 1 } }, + createNew: { () -> Disposable in Disposables.create { numberDisposables += 1 } }, bagAction: { (bag: RxMutableBox>) in disposeAll(in: bag.value); XCTAssertTrue(bag.value.count == i - j) } ) @@ -137,7 +137,7 @@ extension BagTest { } increment2 += 1 }) - _ = bag3.value.insert(AnonymousDisposable { _ in + _ = bag3.value.insert(Disposables.create { _ in if increment3 == breakAt { bag3.value.removeAll() } @@ -176,7 +176,7 @@ extension BagTest { ) numberOfActionsAfter(100, deletionsFromStart: 0, - createNew: { () -> Disposable in AnonymousDisposable { numberDisposables += 1 } }, + createNew: { () -> Disposable in Disposables.create { numberDisposables += 1 } }, bagAction: { (bag: RxMutableBox>) in bag.value.removeAll(); disposeAll(in: bag.value); } ) @@ -194,7 +194,7 @@ extension BagTest { var keys: [Bag.KeyType] = [] for _ in 0...KeyType] = [] for _ in 0.. = Observable.deferred { count += 1 return Observable.create { obs in - return AnonymousDisposable { + return Disposables.create { disconnected = true } } diff --git a/Tests/RxSwiftTests/Tests/Observable+ConcurrencyTest.swift b/Tests/RxSwiftTests/Tests/Observable+ConcurrencyTest.swift index 9665608b..95cb80df 100644 --- a/Tests/RxSwiftTests/Tests/Observable+ConcurrencyTest.swift +++ b/Tests/RxSwiftTests/Tests/Observable+ConcurrencyTest.swift @@ -44,7 +44,7 @@ extension ObservableConcurrencyTest { _ = scheduler.schedule(()) { s in expectation.fulfill() - return NopDisposable.instance + return Disposables.create() } waitForExpectations(timeout: 1.0) { e in @@ -95,7 +95,7 @@ extension ObservableConcurrencyTest { .observeOn(scheduler) XCTAssertTrue(a == a) // shut up swift compiler :(, we only need to keep this in memory XCTAssert(numberOfSerialDispatchQueueObservables == 1) - return NopDisposable.instance + return Disposables.create() } XCTAssert(numberOfSerialDispatchQueueObservables == 0) @@ -111,11 +111,11 @@ extension ObservableConcurrencyTest { self.sleep(0.1) // should be enough to block the queue, so if it's concurrent, it will fail XCTAssert(OSAtomicDecrement32(&numberOfConcurrentEvents) == 0) OSAtomicIncrement32(&numberOfExecutions) - return NopDisposable.instance + return Disposables.create() } _ = scheduler.schedule((), action: action) _ = scheduler.schedule((), action: action) - return NopDisposable.instance + return Disposables.create() } XCTAssert(numberOfSerialDispatchQueueObservables == 0) @@ -179,7 +179,7 @@ extension ObservableConcurrencyTest { ]) xs.on(.next(1)) xs.on(.next(2)) - return NopDisposable.instance + return Disposables.create() }, { scheduler in XCTAssertEqual(observer.events, [ @@ -189,7 +189,7 @@ extension ObservableConcurrencyTest { ]) XCTAssert(xs.subscriptions == [SubscribedToHotObservable]) xs.on(.completed) - return NopDisposable.instance + return Disposables.create() }, { scheduler in XCTAssertEqual(observer.events, [ @@ -199,7 +199,7 @@ extension ObservableConcurrencyTest { completed() ]) XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable]) - return NopDisposable.instance + return Disposables.create() }, ]) } @@ -220,7 +220,7 @@ extension ObservableConcurrencyTest { completed() ]) XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable]) - return NopDisposable.instance + return Disposables.create() } ]) } @@ -243,7 +243,7 @@ extension ObservableConcurrencyTest { ]) xs.on(.next(1)) xs.on(.next(2)) - return NopDisposable.instance + return Disposables.create() }, { scheduler in XCTAssertEqual(observer.events, [ @@ -253,7 +253,7 @@ extension ObservableConcurrencyTest { ]) XCTAssert(xs.subscriptions == [SubscribedToHotObservable]) xs.on(.error(testError)) - return NopDisposable.instance + return Disposables.create() }, { scheduler in XCTAssertEqual(observer.events, [ @@ -263,7 +263,7 @@ extension ObservableConcurrencyTest { error(testError) ]) XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable]) - return NopDisposable.instance + return Disposables.create() }, ]) } @@ -292,14 +292,14 @@ extension ObservableConcurrencyTest { xs.on(.error(testError)) - return NopDisposable.instance + return Disposables.create() }, { scheduler in XCTAssertEqual(observer.events, [ next(0), ]) XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable]) - return NopDisposable.instance + return Disposables.create() } ]) } @@ -364,7 +364,7 @@ class ObservableConcurrentSchedulerConcurrencyTest: ObservableConcurrencyTestBas stop.on(.completed) - return NopDisposable.instance + return Disposables.create() } _ = scheduler.schedule((), action: concurrent) @@ -579,7 +579,7 @@ extension ObservableConcurrencyTest { let xs: Observable = Observable.create { observer in scheduled = scheduler.clock - return AnonymousDisposable { + return Disposables.create { disposed = scheduler.clock } } diff --git a/Tests/RxSwiftTests/Tests/Observable+MultipleTest.swift b/Tests/RxSwiftTests/Tests/Observable+MultipleTest.swift index 21381353..8c234b43 100644 --- a/Tests/RxSwiftTests/Tests/Observable+MultipleTest.swift +++ b/Tests/RxSwiftTests/Tests/Observable+MultipleTest.swift @@ -4263,7 +4263,7 @@ extension ObservableMultipleTest { ]) let r: Observable = Observable.create { o in - return AnonymousDisposable { + return Disposables.create { isDisposed = true } } diff --git a/Tests/RxSwiftTests/Tests/Observable+SingleTest.swift b/Tests/RxSwiftTests/Tests/Observable+SingleTest.swift index e7d04c21..ad6d823f 100644 --- a/Tests/RxSwiftTests/Tests/Observable+SingleTest.swift +++ b/Tests/RxSwiftTests/Tests/Observable+SingleTest.swift @@ -985,7 +985,7 @@ extension ObservableSingleTest { observer.on(.next(5)) observer.on(.completed) - return NopDisposable.instance + return Disposables.create() } _ = sequenceSendingImmediateError @@ -1377,7 +1377,7 @@ extension ObservableSingleTest { observer.on(.next(5)) observer.on(.completed) - return NopDisposable.instance + return Disposables.create() } _ = sequenceSendingImmediateError diff --git a/Tests/RxSwiftTests/Tests/Observable+TimeTest.swift b/Tests/RxSwiftTests/Tests/Observable+TimeTest.swift index 1a68a0df..50187435 100644 --- a/Tests/RxSwiftTests/Tests/Observable+TimeTest.swift +++ b/Tests/RxSwiftTests/Tests/Observable+TimeTest.swift @@ -560,7 +560,7 @@ extension ObservableTimeTest { _ = scheduler.schedule(()) { _ in cleanResources.fulfill() - return NopDisposable.instance + return Disposables.create() } waitForExpectations(timeout: 1.0) { e in diff --git a/Tests/RxSwiftTests/Tests/ObserverTests.swift b/Tests/RxSwiftTests/Tests/ObserverTests.swift index 543c8c9b..291ed976 100644 --- a/Tests/RxSwiftTests/Tests/ObserverTests.swift +++ b/Tests/RxSwiftTests/Tests/ObserverTests.swift @@ -18,7 +18,7 @@ extension ObserverTests { var observer: AnyObserver! let a: Observable = Observable.create { o in observer = o - return NopDisposable.instance + return Disposables.create() } var elements = [Int]() @@ -38,7 +38,7 @@ extension ObserverTests { var observer: AnyObserver! let a: Observable = Observable.create { o in observer = o - return NopDisposable.instance + return Disposables.create() } var elements = [Int]() @@ -67,7 +67,7 @@ extension ObserverTests { var observer: AnyObserver! let a: Observable = Observable.create { o in observer = o - return NopDisposable.instance + return Disposables.create() } var elements = [Int]() diff --git a/Tests/RxSwiftTests/Tests/SchedulerTests.swift b/Tests/RxSwiftTests/Tests/SchedulerTests.swift index 50a4de4e..54e1b418 100644 --- a/Tests/RxSwiftTests/Tests/SchedulerTests.swift +++ b/Tests/RxSwiftTests/Tests/SchedulerTests.swift @@ -37,7 +37,7 @@ extension ConcurrentDispatchQueueSchedulerTests { _ = scheduler.scheduleRelative(1, dueTime: 0.5) { (_) -> Disposable in interval = Date().timeIntervalSince(start) expectScheduling.fulfill() - return NopDisposable.instance + return Disposables.create() } waitForExpectations(timeout: 1.0) { error in @@ -58,7 +58,7 @@ extension ConcurrentDispatchQueueSchedulerTests { let disposable = scheduler.scheduleRelative(1, dueTime: 0.1) { (_) -> Disposable in interval = Date().timeIntervalSince(start) expectScheduling.fulfill() - return NopDisposable.instance + return Disposables.create() } disposable.dispose() diff --git a/Tests/RxSwiftTests/Tests/VirtualSchedulerTest.swift b/Tests/RxSwiftTests/Tests/VirtualSchedulerTest.swift index fb6a6593..d4153812 100644 --- a/Tests/RxSwiftTests/Tests/VirtualSchedulerTest.swift +++ b/Tests/RxSwiftTests/Tests/VirtualSchedulerTest.swift @@ -33,11 +33,11 @@ extension VirtualSchedulerTest { times.append(scheduler.clock) _ = scheduler.scheduleRelative((), dueTime: 20.0) { _ in times.append(scheduler.clock) - return NopDisposable.instance + return Disposables.create() } return scheduler.schedule(()) { _ in times.append(scheduler.clock) - return NopDisposable.instance + return Disposables.create() } } @@ -59,16 +59,16 @@ extension VirtualSchedulerTest { times.append(scheduler.clock) let d = scheduler.scheduleRelative((), dueTime: 20.0) { _ in times.append(scheduler.clock) - return NopDisposable.instance + return Disposables.create() } let d2 = scheduler.schedule(()) { _ in times.append(scheduler.clock) - return NopDisposable.instance + return Disposables.create() } d2.dispose() d.dispose() - return NopDisposable.instance + return Disposables.create() } scheduler.start() @@ -87,11 +87,11 @@ extension VirtualSchedulerTest { times.append(scheduler.clock) _ = scheduler.scheduleRelative((), dueTime: 20.0) { _ in times.append(scheduler.clock) - return NopDisposable.instance + return Disposables.create() } return scheduler.schedule(()) { _ in times.append(scheduler.clock) - return NopDisposable.instance + return Disposables.create() } } @@ -113,11 +113,11 @@ extension VirtualSchedulerTest { times.append(scheduler!.clock) _ = scheduler!.scheduleRelative((), dueTime: 20.0) { _ in times.append(scheduler!.clock) - return NopDisposable.instance + return Disposables.create() } return scheduler!.schedule(()) { _ in times.append(scheduler!.clock) - return NopDisposable.instance + return Disposables.create() } } @@ -138,16 +138,16 @@ extension VirtualSchedulerTest { times.append(scheduler!.clock) let d1 = scheduler!.scheduleRelative((), dueTime: 20.0) { _ in times.append(scheduler!.clock) - return NopDisposable.instance + return Disposables.create() } let d2 = scheduler!.schedule(()) { _ in times.append(scheduler!.clock) - return NopDisposable.instance + return Disposables.create() } d1.dispose() d2.dispose() - return NopDisposable.instance + return Disposables.create() } scheduler.advanceTo(20) @@ -166,16 +166,16 @@ extension VirtualSchedulerTest { times.append(scheduler!.clock) _ = scheduler!.scheduleRelative((), dueTime: 20.0) { _ in times.append(scheduler!.clock) - return NopDisposable.instance + return Disposables.create() } _ = scheduler!.schedule(()) { _ in times.append(scheduler!.clock) - return NopDisposable.instance + return Disposables.create() } scheduler!.stop() - return NopDisposable.instance + return Disposables.create() } scheduler.start() @@ -195,14 +195,14 @@ extension VirtualSchedulerTest { scheduler!.sleep(10) _ = scheduler!.scheduleRelative((), dueTime: 20.0) { _ in times.append(scheduler!.clock) - return NopDisposable.instance + return Disposables.create() } _ = scheduler!.schedule(()) { _ in times.append(scheduler!.clock) - return NopDisposable.instance + return Disposables.create() } - return NopDisposable.instance + return Disposables.create() } scheduler.start() @@ -224,7 +224,7 @@ extension VirtualSchedulerTest { times.append(random) _ = scheduler.scheduleRelative((), dueTime: RxTimeInterval(10 * random)) { [weak scheduler] _ in ticks.append(scheduler!.clock) - return NopDisposable.instance + return Disposables.create() } }