Unter Verwendung von ReactiveCocoa gibt es zwei Möglichkeiten, um Abonnenten dieselben Werte von einem Signal zu erhalten, anstatt erneut auszulösen, welche Operation diese Werte generiert: Über RACReplaySubject oder RACMulticastConnection.Wann RACReplaySubject vs. RACMulticastConnection verwenden?
Hier sind die Header-Dokumentation für RACReplaySubject:
Eine Wiederholung unterliegt die Werte speichert sie (bis zu seiner definierten Kapazität) gesendet wird und sendet jene an neue Abonnenten. Es wird auch ein Fehler oder Abschluss wiedergegeben.
Und für RACMulticastConnection:
Eine Multicast-Verbindung kapselt die Idee von einem Abonnement eines Signal an viele Teilnehmer zu teilen. Dies ist am häufigsten erforderlich, wenn das Abonnement für das zugrunde liegende Signal Nebenwirkungen aufweist oder nicht mehr als einmal aufgerufen werden sollte.
Das Multicasted-Signal wird nur abonniert, wenn
-[RACMulticastConnection connect]
aufgerufen wird. Bis dahin werden keine Werte ansignal
gesendet. Siehe-[RACMulticastConnection autoconnect]
für wie-[RACMulticastConnection connect]
kann automatisch aufgerufen werden.Beachten Sie, dass Sie RACMulticastConnection nicht manuell erstellen sollten. Verwenden Sie stattdessen
-[RACSignal publish]
oder-[RACSignal multicast:]
.
Kann jemand bieten einfache Richtlinien, wenn Sie RACReplaySubject oder RACMulticastConnection verwenden würde?
Ausgezeichnet, danke! – Poulsbo
Wäre RACMulticastConnection für den Block "onMessage" eines WebSocket-Clients geeignet? Dann können die Teilnehmer entsprechend filtern, was mit unterschiedlichen Datentypen gemacht wird? –
@MaxAlexander Sie können eine separate Frage dafür öffnen, da ich denke, dass ich es ohne weitere Details nicht beantworten kann. –