如果我将相同的值连续两次或两次以上分配给ObservableObject
的@Published
成员,是两次/所有写入都会导致观察者/接收器接收到具有相同值的更新,还是Combine会抑制实际上没有更改值的分配的更新?
答案是否定的。每次在属性上设置值时,@Published
属性都会发送一条更改消息:
import Combine
class ModelObject: ObservableObject {
@Published var publishedProperty: Int = 0
}
let observeMe = ModelObject()
let subscription = observeMe
.$publishedProperty
.scan(0) { counter, _ in
counter + 1
}
.sink {
print("The number of changes is ($0)")
}
observeMe.publishedProperty = 1
observeMe.publishedProperty = 2
observeMe.publishedProperty = 2
observeMe.publishedProperty = 3
打印:
The number of changes is 1
The number of changes is 2
The number of changes is 3
The number of changes is 4
The number of changes is 5
第一个更改是属性(0(的原始值,然后以下四个更改中的每一个都会导致发布者发送事件,即使该属性多次设置为值2
也是如此。