我有出版商
@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中的某事何时更改?
答案 0 :(得分:2)
.onReceive
将在每次feedData
更改时执行,此时Published
发布者将发出一个值。
如果Feed
是一个值类型,例如struct
,那么只要它的任何属性发生变化,Swift的值类型语义都将确保整个对象都被更改。
如果Feed
是引用类型-class
,则只有将feedData
设置为其他实例时,才会发出值。