Objective-C KVC、KVO

键值编码KVC

KVC的操作方法由NSKeyValueCoding协议提供,而NSObject就实现了这个协议,也就是说ObjC中几乎所有的对象都支持KVC操作,常用的KVC操作方法如下:

  • 动态设置
    setValue:属性值 forKey:属性名(用于简单路径)
    setValue:属性值 forKeyPath:属性路径(用于复合路径,例如Person有一个Account类型的属性,那么person.account就是一个复合属性)
  • 动态读取
    valueForKey:属性名
    valueForKeyPath:属性名(用于复合路径)

键值监听KVO

KVO其实是一种观察者模式,利用它可以很容易实现视图组件和数据模型的分离,当数据模型的属性值改变之后作为监听器的视图组件就会被激发,激发时就会回调监听器自身。在ObjC中要实现KVO则必须实现NSKeyValueObServing协议,不过幸运的是NSObject已经实现了该协议,因此几乎所有的ObjC对象都可以使用KVO。

在ObjC中使用KVO操作常用的方法如下:

  • 注册指定Key路径的监听器: addObserver: forKeyPath: options: context:
  • 删除指定Key路径的监听器: removeObserver: forKeyPath
  • removeObserver: forKeyPath: context:
  • 回调监听 observeValueForKeyPath: ofObject: change: context:

KVO的使用步骤也比较简单:
通过addObserver: forKeyPath: options: context:为被监听对象(它通常是数据模型)注册监听器
重写监听器的observeValueForKeyPath: ofObject: change: context:方法

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

推荐阅读更多精彩内容

  • KCV 其实由于ObjC的语言特性,你根部不必进行任何操作就可以进行属性的动态读写,这种方式就是Key Value...
    TYM阅读 4,666评论 0 4
  • kvc简述 kvc即键值编码,在iOS中的应用主要体现在开发者通过key访问对象的属性或给对象的属性赋值。这样做最...
    RunnerFL阅读 3,379评论 0 0
  • 由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby、Python的动态特性,例如动态类型、...
    JonesCxy阅读 2,865评论 0 0
  • 转载:http://yulingtianxia.com/blog/2014/05/12/objective-czh...
    F麦子阅读 4,569评论 0 0
  • 由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby、Python的动态特性,例如动态类型、...
    JonesCxy阅读 3,280评论 1 0