Как не аннулировать наблюдателя, когда привязка установлена ​​в RxSwift? - PullRequest
0 голосов
/ 21 мая 2019

Я довольно новичок в мире RxSwift и, видимо, я не правильно его использую ... У меня есть кнопка, которую я хотел бы подключить к наблюдателю, как этот

button.rx.tap.bind(to: viewModel.someObserver).disposed(by: disposeBag)

, где someObserver в viewModel инициализируется следующим образом:

let publishSubject = PublishSubject<Void>()
someObserver = publishSubject.asObserver()
someObservable = publishSubject.asObservable() 

Однако, когда Disposable, созданный с привязкой, удаляется, PublishSubject, который используется как Observer и Observable, становится недействительным, и все новые подписки немедленно удаляются.

Я хотел бы использовать мой PublishSubject в течение более длительного времени и иметь возможность подписаться на него после удаления привязки. Как этого добиться?

1 Ответ

1 голос
/ 22 мая 2019

Посмотрите на PublishRelay, который не может завершиться с ошибкой или завершенным событием.

Привязка отводов к PublishRelay будет просто игнорировать завершенное событие ( source ) после удаления подписки, например, когда кнопка освобождена. Это позволит вам подписаться на PublishRelay на более позднем этапе

...