With the following Swift playground, why does the observer inside view
never get called?
import Foundation
@objc class Person: NSObject {
@objc dynamic var name = "Taylor Swift"
}
let taylor = Person()
taylor.observe(\Person.name, options: .new) { person, change in
// we do get here
print("I'm now called \(person.name)")
}
taylor.name = "Justin Bieber"
@objc class View: NSObject {
var person = Person()
override init() {
person.observe(\Person.name, options: .new) { (person, change) in
// we never get here
print("I changed my name to \(person.name)")
}
}
}
let view = View()
let lewis = Person()
lewis.name = "Lewis"
view.person = lewis
view.person.name = "Lewis"
print(view.person.name)