iOS Swift4.0 KVO的官方使用方式

在Swift4.0中,KVO的使用方式相对于3.2有一些变化,为了方便以后查阅,这里将Demo代码记录在这里。
代码:

import UIKit
class MyClass: NSObject {
    @objc dynamic var date = Date()
}
class AnotherClass: NSObject {
    var myObject: MyClass!
    var observation: NSKeyValueObservation?
    override init() {
        super.init()
        myObject = MyClass()
        print("初始化了,当前日期是:\(myObject.date)")
        
        observation = myObject.observe(\MyClass.date, options: [.new], changeHandler: { (object, change) in
            print("hello")
            if let newDate = change.newValue {
                print("new date is \(newDate)")
            }
        })
    
        self.myObject.date = Date() // 这里是设置时间(在PlayGround中可以运行)
        /*
        let time = DispatchTime.now() + 2
        DispatchQueue.main.asyncAfter(deadline: time) {
            print("改变") // 在这里延迟改变时间可以更清楚的看出
            self.myObject.date = Date()
        }
         */
    }
}
let a = AnotherClass() // 初始化这个对象来运行代码

你可能感兴趣的:(iOS Swift4.0 KVO的官方使用方式)