diff --git a/RxSwift/Disposables/AnonymousDisposable.swift b/RxSwift/Disposables/AnonymousDisposable.swift index d6fbf601..b25070a8 100644 --- a/RxSwift/Disposables/AnonymousDisposable.swift +++ b/RxSwift/Disposables/AnonymousDisposable.swift @@ -36,7 +36,13 @@ public final class AnonymousDisposable : DisposeBase, Cancelable { _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. @@ -53,3 +59,11 @@ public final class AnonymousDisposable : DisposeBase, Cancelable { } } } + +public extension Disposables { + + static func create(with action: () -> ()) -> Disposable { + return AnonymousDisposable(disposeAction: action) + } + +} diff --git a/RxSwift/Disposables/Disposables.swift b/RxSwift/Disposables/Disposables.swift index 445b6a24..a786483a 100644 --- a/RxSwift/Disposables/Disposables.swift +++ b/RxSwift/Disposables/Disposables.swift @@ -14,12 +14,10 @@ public struct Disposables { public extension Disposables { - static func create() -> Disposable { - return NopDisposable.instance - } + private static let noOp: Disposable = NopDisposable() - static func create(with action: () -> ()) -> Disposable { - return AnonymousDisposable(action) + static func create() -> Disposable { + return noOp } static func create(_ disposable1: Disposable, _ disposable2: Disposable, _ disposable3: Disposable) -> Disposable {