【问题标题】:When the @Published publishes the value it wraps?当@Published 发布它包装的值时?
【发布时间】:2020-10-09 11:04:33
【问题描述】:

我找到了发布者

@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 的任何属性时?当 something 在 feedData 中发生变化时,此属性包装器如何知道?

【问题讨论】:

    标签: swift swiftui publish-subscribe combine property-wrapper


    【解决方案1】:

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

    如果Feed 是一个值类型,比如struct,那么只要它的任何属性发生变化,Swift 的值类型语义就会确保整个对象都被更改。

    如果 Feed 是引用类型 - class,那么只有将 feedData 设置为不同的实例时才会发出值。

    【讨论】:

      猜你喜欢
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-20
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      相关资源
      最近更新 更多