KVO

KVO系统由NSObject实现,所有NS类均可直接使用监听。

注册监听器:

由于所有NSObject对象均实现KVO系统,因此可直接在任何对象上调用函数,并传入self作为observer对象。

addObserver(observer: NSObject, forKeyPath keyPath: String, options: NSKeyValueObservingOptions, context: UnsafeMutablePointer)
移除监听器:

目标对象未曾注册为监听器时,调用该移除函数会导致error错误。
另外,必须确保在注册监听器时所用对象在被销毁前调用移除函数。

removeObserver(observer: NSObject, forKeyPath keyPath: String)
监听:
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer) {
    if object is 目标Class && keyPath == 监听中的keyPath {
    
           // 类型转换
           if let statusValue = change?[NSKeyValueChangeNewKey] as? Int {
               if let status = 目标枚举Class(rawValue: statusValue){
                   switch status {
                   case 目标枚举Class.枚举量A:
                       break
                   ...
}
参考:
  • 整理了一下关于KVO的姿势 -

你可能感兴趣的