class Person: NSObject {
var name = "LuSi"
}
//ViewController中利用KVC键值编码
let person = Person()
//取值
let value = person.value(forKey: "name") as! String
//改值
person.setValue("Amy", forKey: "name")
--------KVO------------
class Dog: NSObject {
dynamic var name = "dog" //被监听属性用dynamic标注
}
//ViewController
//添加观察者
dog.addObserver(self, forKeyPath: "name", options: .new, context: nil)
//改变监听属性
dog.name = "aa"
//当视图消失的时候调用deinit方法移除观察者
deinit{
dog.removeObserver(self, forKeyPath: "name")
}
//当监听属性被修改时会触发此方法
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
print("Changed to:\(change![NSKeyValueChangeKey.newKey]!)")
}