Используя ReactiveCocoa, кажется, есть два способа заставить подписчиков получать одни и те же значения из сигнала, а не повторно - запуск любой операции, создающей эти значения: через RACReplaySubject или RACMulticastConnection.
Вот заголовочные документы для RACReplaySubject:
Субъект воспроизведения сохраняет отправленные им значения (в пределах определенной емкости) и повторно отправляет их новым подписчикам. Он также будет воспроизводить ошибку или завершение.
И для RACMulticastConnection:
Многоадресное соединение заключает в себе идею совместного использования одной подписки на сигнал для многих подписчиков. Это чаще всего необходимо, если подписка на базовый сигнал включает побочные эффекты или не должна вызываться более одного раза.
Многоадресный сигнал подписывается только при вызове
-[RACMulticastConnection connect]
. До тех пор, пока это не произойдет, никакие значения не будут отправлены наsignal
. См.-[RACMulticastConnection autoconnect]
, как-[RACMulticastConnection connect]
может вызываться автоматически.Обратите внимание, что не следует создавать RACMulticastConnection вручную. Вместо этого используйте
-[RACSignal publish]
или-[RACSignal multicast:]
.
Может ли кто-нибудь предоставить простые рекомендации относительно того, когда следует использовать RACReplaySubject или RACMulticastConnection?