Ответ 1
Beta 4 В заметках о выпуске говорится:
Требование протоколов BindableObject теперь будет willChange вместо didChange, и теперь должен быть отправлен до изменения объекта чем после того, как это изменится. Это изменение позволяет улучшить объединение изменить уведомления. (51580731)
Вам нужно изменить код на:
class UserSettings: BindableObject {
let willChange = PassthroughSubject<Void, Never>()
var score: Int = 0 {
willSet {
willChange.send()
}
}
}
В бета-версии 5 они снова меняют его. На этот раз они осуждают BindableObject все вместе!
BindableObject заменяется протоколом ObservableObject из Объединить рамки. (50800624)
Вы можете вручную соответствовать ObservableObject, определив objectWillChange издатель, который излучает до изменения объекта. Однако по умолчанию ObservableObject автоматически синтезирует objectWillChange и отправляется до изменения любых свойств @Published.
@ObjectBinding is replaced by @ObservedObject.
class UserSettings: ObservableObject {
@Published var score: Int = 0
}
struct MyView: View {
@ObservedObject var settings: UserSettings
}