Search code examples
swiftswift3rx-swift

What is the RxSwift 3.0 equivalent to AnonymousDisposable from RxSwift 2.x?


The ReactiveX.io documentation uses AnonymousDisposable, which was in RxSwift 2.x, but is an unresolved identifier in RxSwift 3.0. What should I use instead?

let source = Observable.create { observer in
  for i in 1...5 {
    observer.on(.Next(i))
  }
  observer.on(.Completed)

  // Note that this is optional. If you require no cleanup you can return
  // NopDisposable.instance
  return AnonymousDisposable {
    print("Disposed")
  }
}

source.subscribe {
  print($0)
}

Solution

  • To create Observable's in Swift 3,4,5 you have to substitute the old AnonymousDisposable instance with Disposables.create(), like in this way:

    let source = Observable.create { observer in
        observer.on(.next(1))
        observer.on(.completed)
        return Disposables.create()
    }
    

    If you wanna take some action when the Observable is disposed you can use the one you mention before instead:

    return Disposables.create {
        print("Disposed")      
    }
    

    I hope this help you.