A very important difference between a Signal and a SignalProducer
A property in ReactiveSwift allows us to track its changes over time.
A Property
in ReactiveSwift allows us to track its changes over time.
A Property
is thread-safe and observable.
A MutableProperty
is a Property
that can also be changed.
Frequently we will use the following pattern to expose only non-muttable property in the interface:
interface
var nonMutableProperty: Property<Bool> { get }
implementation
public var nonMutableProperty: Property< Bool> { return Property(_nonMutableProperty) }
…
fileprivate let _ nonMutableProperty: MutableProperty<Bool>
A Property
exposes a signal
and a producer
to which we subscribe to track changes.
For example:
nonMutableProperty.producer
.on(value: { embeddableView in
log.verbose("do something")
})
.on(failed: { error in
log.error(error.localizedDescription)
})
.start()
The difference is that the signal
will only send value changes that happen after subscribing, whereas the SignalProducer
creates a signal
that sends the current value immediately followed by all changes later on.
In other words signal
is a hot observable because like a TV broadcast it sends values even if it does not have any subscribers and as a result does not introduce any side-effects. SignalProducer
is a cold observable because it is created only after it is being subscribed to.
Subscribe to The infinite monkey theorem
Get the latest posts delivered right to your inbox