В функции observe
должно быть что-то особенное, поскольку ко всем функциям и методам можно обращаться по-своему.Вместо этого он просит вас создать что-то вроде этого:
class Foo {
@objc public dynamic var vm: (NSObject & DemoViewModel)?
private var observer: NSKeyValueObservation?
func setVM<T>(_ vm: T) where T: NSObject &: DemoViewModel {
self.vm = vm
observer = vm?.observe(\.bla, options: [.old, .new]) { _, _ in
// do something
}
}
}
Когда вы реализуете DemoViewModel
, помните, что вам нужно пометить bla
как dynamic
, иначе наблюдатель не будет вызван.
class Bar: NSObject, DemoViewModel {
@objc dynamic var bla: String = ""
}