Подтвердить что ты не робот

Что такое эквивалент RxSwift 3.0 для AnonymousDisposable из RxSwift 2.x?

Документация ReactiveX.io использует AnonymousDisposable, который был в RxSwift 2.x, но является нерешенным идентификатором в RxSwift 3.0. Что я должен использовать вместо этого?

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)
}
4b9b3361

Ответ 1

Чтобы создать Observable в Swift 3,4,5, вы должны заменить старый экземпляр AnonymousDisposable на Disposables.create(), например, так:

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

Если вы хотите предпринять какие-либо действия при утилизации Обсерватории, вы можете использовать тот, который вы упомянули ранее:

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

Я надеюсь, что это поможет вам.

Ответ 2

Обратите внимание, что этот синтаксис из Swift 2:

NopDisposable.instance

также был заменен на

Disposables.create() 

Кроме того, интересно отметить, что под капотом NopDisposable все еще существует, но подвергается этому методу create. Здесь источник.

Ответ 3

Использование:

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