Эти две версии ...Relay
используются для моделирования различных концепций:
BehaviorRelay
представляет Состояние PublishRelay
представляет События
Имеет смысл воспроизвести State , следовательно, BehaviorRelay
воспроизводит свое последнее значение.
Это имеет меньше смысла (нет?)воспроизведение События , следовательно, PublishRelay
не воспроизводит свое последнее значение.
Учитывая это, имеет смысл преобразовать BehaviorRelay
в Driver
, поскольку драйвер управляет приложением, используя State .Стратегия совместного использования для BehaviorRelay
и Driver
заключается в том, чтобы делиться побочными эффектами и воспроизводить последнее значение , пока подключено хотя бы одно наблюдаемое.
A PublishRelay
лучше представить какSignal
, так что вы, вероятно, можете использовать Signal
для эмиссии.Стратегия совместного использования в этом случае будет , а не , воспроизводить последнее значение, но все же будет делиться побочными эффектами, пока подключено хотя бы одно наблюдаемое.
(я строю этот ответ, используя этот отличный комментарий из @ freak4pc в репозиторий RxSwift)