Beta 4 发行说明说:
BindableObject协议的要求现在是willChange而不是didChange,并且应该在对象更改之前而不是更改之后发送。此更改可以改进更改通知的合并。(51580731)
您需要将代码更改为:
class UserSettings: BindableObject {
let willChange = PassthroughSubject()
var score: Int = 0 {
willSet {
willChange.send()
}
}
}
在Beta 5中,他们再次更改了它。这次他们一起弃用了BindableObject!
BindableObject替换为Combine框架中的ObservableObject协议。(50800624)
您可以通过定义在对象更改之前发出的objectWillChange发布者来手动遵守ObservableObject。但是,默认情况下,ObservableObject自动合成objectWillChange并在任何@Published属性更改之前发出。
@ObjectBinding替换为@ObservedObject。
class UserSettings: ObservableObject {
@Published var score: Int = 0
}
struct MyView: View {
@ObservedObject var settings: UserSettings
}