Привет, Хабр! Представляю вашему вниманию перевод статьи [Understanding Publish, Connect, RefCount and Share in RxSwift][1].
_Примечание переводчика.
В оригинале статьи используется Swift второй версии и соответствующая версия RxSwift. Я имел смелость переписать приведенные ниже куски кода под Swift 3.
Так же хочется отметить, что такие понятия, как Observable и Sequence, можно считать одним и тем же. То же касается Observer и Subscriber._
В этой статье я постараюсь объяснить такие операторы для работы с Connectable Observable в RxSwift, как `publish, connect, refCount` и `share`. Они используются вместе в различных комбинациях. Очень важно понимать разницу между:
* **`publish().connect() `**
* и **`publish().refcount()`** (или просто **`share()`**)
Прежде чем перейти к сути, мне хотелось бы сказать пару слов о hot и cold Observables. Как по мне, так понятия горячих и холодных Observables немного размыты.
Давайте горячий Observable мы будем называть Active Sequence, а холодный Passive Sequence.
* Active Sequence эмитит элементы **постоянно**, независимо от того, подписан на нее кто-нибудь или нет
* Passive Sequence начинает эмитить элементы **по запросу**
Примером Passive Sequence может служить запрос в сеть, который начинается только тогда, когда мы подписались на последовательность. Примерами Active Sequence могут служить web-socket соединение, события таймера или текст, производимый `UITextField`'ом.
И это все. Думайте об активных и пассивных последовательностях. Понятия горячих/холодных/теплых/прохладных Observables слишком запутанны и могут сбить с толку.
[Читать дальше →][2]
[1]:
http://www.tailec.com/blog/understanding-publish-connect-refcount-share
[2]:
https://habrahabr.ru/post/336662/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut