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