Der Bindungsoperator (< ~) nimmt ein BindingSource
Argument, sowohl Signal
und SignalProducer
das ProtokollReactiveCocoa: Unterschied zwischen der Bindung an ein Signal oder einen SignalProducer?
entsprechen würde ich ein UI-Element erwarten, die zu einem Hersteller gebunden ist, würde nicht „Ereignisse empfängt“, bis der Produzent gestartet in gewisser Weise, aber das scheint nicht der Fall
dh
let text = MutableProperty("abc")
myLabel1.reactive.text <~ text.signal
myLabel2.reactive.text <~ text.producer
text.value = "def"
verursacht beide Etiketten zu aktualisieren zu sein.
Ist das beabsichtigte Verhalten oder bin ich etwas missverstanden?
Es scheint, dass ein SignalProducer aus den von Ihnen angegebenen Gründen kein gültiges verbindliches Ziel sein sollte? Wird der Aufruf implizit (vom POV des Anwenders) gestartet, spricht das dagegen, warum Signale und Produzenten in erster Linie unterschieden werden? – synndicate
Ich kann die Verwirrung sehen, aber auf der anderen Seite ist '<~' nicht die einzige Funktion, die implizit einen Produzenten startet. 'flatMap' ist ein extrem häufiger Operator, der das gleiche tut. [Dieses Beispiel] (https://github.com/ReactiveCocoa/ReactiveSwift/blob/master/Documentation/Example.OnlineSearch.md#making-network-requests) aus der Reactive-Swift-Dokumentation verwendet 'flatMap', um Produzenten automatisch implizit zu starten obwohl keine der 'start *' Funktionen irgendwo zu sehen sind. – jjoelson