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() // 初始化这个对象来运行代码
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,547评论 8 265
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,024评论 25 708
  • 我有个小侄子,熟悉我的人应该都知道,名字也是朗朗上口~高粱!没有高粱之前我及其不喜欢小孩子,特别是小孩子哭闹,我研...
    cherry8843阅读 362评论 2 2
  • 我不懂哲学,也不是文科生,对哲学接触甚少。这些年,无缘无故的就喜欢去读一些哲学类的书,读的大多数也是欧洲古代的和近...
    武陵清泉阅读 355评论 1 3
  • 早上醒来的一瞬间 脑海里 一个名字 浮上来 一天 两天 三四天 天天如此 是什么渊源 无从解答 想念你的心 见缝插...
    叶岚叶阅读 394评论 6 4