Я пробовал пример из документации ObservableObject .
class Contact: ObservableObject {
@Published var name: String = "me"
@Published var age: Int = 7
}
Когда я делаю Swift Playground с кодом:
let c = Contact()
c.objectWillChange.sink { print("This prints") }
c.age += 1
objectWillChange
триггеры и линия печатает.
Пока все хорошо.
Теперь я делаю View в SwiftUI:
struct ContentView: View {
@ObservedObject var contact = Contact
...
Я создаю это представление в AppDelegate, иdo:
contentView.contact.objectWillChange.sink { print("This doesn't print.") }
Я подключил контакт к различным элементам управления, и изменение любых полей обновляет все элементы управления. Doing onReceive(contact.objectWillChange)
также работает нормально. Но не подключаясь к нему в AppDelegate. Я попытался войти deinit()
, чтобы убедиться, что мы говорим об одном и том же объекте. Я пытался использовать ImmediateScheduler
. Нет кости. Почему это не работает?