当@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
设置为不同的实例时才会发出值。
我找到了发布者
@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
设置为不同的实例时才会发出值。