swift-kvo

swift中kvo的使用

  class MyClass: NSObject {
dynamic var date = Date()
  }

 class MyClass1: NSObject {
      var date = Date()
  }

   class MyChildClass: MyClass1 {
      dynamic override var date: Date {
    get { return super.date }
    set { super.date = newValue }
}
   }

  private var myContext = 0

   class Class: NSObject {

var myObject: MyClass!

override init() {
    super.init()
    myObject = MyClass()
    print("初始化 MyClass,当前日期: \(myObject.date)")
    myObject.addObserver(self,
        forKeyPath: "date",
        options: .new,
        context: &myContext)

    delay(3) {
        self.myObject.date = Date()
    }
}

override func observeValue(forKeyPath keyPath: String?,
                        of object: Any?,
                           change: [NSKeyValueChangeKey : Any]?,
                          context: UnsafeMutableRawPointer?)
{
    if let change = change, context == &myContext {
        let newDate = change[.newKey]
        print("日期发生变化 \(newDate)")
    }
    }
  }

  let obj = Class()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 谁能不爱 KVO 呢,一处修改,处处得知,多么优雅的模式啊!等等 Notification 模式也可以啊,咳...
    seedante阅读 20,385评论 13 28
  • 前言 在写swift版的上下拉刷新,语法看了3个小时就开始动手了,结果一路坑,先写几篇铺垫的文章,后续文章会附上上...
    嗷呜_阅读 3,693评论 0 2
  • 转载自:https://github.com/Tim9Liu9/TimLiu-iOS[https://github...
    香橙柚子阅读 12,840评论 0 36
  • 厨师的新花样 从前有个厨师,曾经是世上最好的厨师之一。有那么一段时间,厨师坚信,制作佳肴的关键就在于盐的使用,于...
    nailshif阅读 3,547评论 0 1
  • 一、奇迹 1. 今天觉察到考试带来的压力,学会去释放,即使没过也没有不开心,放下的速度越来越快 2. 今天我很开心...
    Aileen爱廉阅读 2,481评论 0 0