当@Published 发布它包装的值时?

When the @Published publishes the value it wraps?

我找到了发布者

@Published var feedData = Feed()

还有这段代码,它监听它

// some View 
.onReceive(feed.$feedData) { feedData in
            if feedData.personalTasks.count > 0 {
                withAnimation(.easeOut(duration: 0.3)) {
                    showCards = true
                }
            }
        }

问题是.onRecieve什么时候执行?每次访问 feedData 时?或者每次 feedData 的任何 属性 被改变? 属性 包装器如何知道 feedData 中的 某些内容 何时发生变化?

.onReceive 将在每次 feedData 更改时执行,也就是当 Published 发布者将发出一个值时。

如果 Feed 是一个 value-type,就像一个 struct,那么只要它的任何属性发生变化,Swift 的 value-type 语义确保正在更改整个对象。

如果 Feed 是 reference-type - class,那么仅当将 feedData 设置为不同的实例时才会发出值。