在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() // 這里是設(shè)置時間(在PlayGround中可以運行)
/*
let time = DispatchTime.now() + 2
DispatchQueue.main.asyncAfter(deadline: time) {
print("改變") // 在這里延遲改變時間可以更清楚的看出
self.myObject.date = Date()
}
*/
}
}
let a = AnotherClass() // 初始化這個對象來運行代碼