美文网首页
IOS开发笔记之KVC与KVO的区别

IOS开发笔记之KVC与KVO的区别

作者: 一只小猪的360 | 来源:发表于2016-09-06 20:27 被阅读0次

键值编码KVC

可以利用字符串的方式去动态控制一个对象。其实由于OC的语言特性,你根部不必进行任何操作就可以进行属性的动态读写,这种方式就是Key Value Coding(简称KVC)。

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

动态设置:

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

动态读取:

  • valueForKey:属性名
  • valueForKeyPath:属性名(用于复合路径)

注意:

  • key的值必须正确,如果拼写错误,会出现异常
  • 当key的值是没有定义的,valueForUndefinedKey:这个方法会被调用,如果你自己写了这个方法,key的值出错就会调用到这里来
  • 因为类key反复嵌套,所以有个keyPath的概念,keyPath就是用.号来把一个一个key链接起来,这样就可以根据这个路径访问下去

键值监听KVO

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

相关文章

  • KVC

    iOS 如何使用KVC iOS开发UI篇—Kvc简单介绍 iOS开发系列--Objective-C之KVC、KVO

  • KVC 和 KVO

    iOS-KVC和KVO精炼讲解(干货)KVC 和 KVOiOS开发系列--Objective-C之KVC、KVO细...

  • iOS日记15-KVC

    1.iOS开发技巧系列---详解KVC 2.漫谈 KVC 与 KVO 3.KVC/KVO原理详解及编程指南 关键点...

  • KVC、KVO

    IOS开发系列--Objective-C之KVC、KVO - KenshinCui - 博客园

  • iOS知识点,iOS面试题, iOS面试题总结

    推荐 :iOS七年开发之路网络笔记,iOS知识点总结,iOS开发笔记。KVC /KVO的底层原理高质量 iOS 博...

  • 从网上收集的一些关键知识点总结

    iOS 中KVC、KVO、NSNotification、delegate 总结及区别

  • 无标题文章

    ios中的 kvc和kvo的区别 KVC编程时setValue(value: AnyObje...

  • KVC剖析与使用

    KVC与KVO相关面试题 KVC -- Key Value Coding(键值编码) 在iOS开发过程中,允许开发...

  • KVC,KVO,消息,代理

    iOS 中KVC、KVO、NSNotification、delegate 总结及区别 1、KVC,即是指 NSKe...

  • ReactiveCocoa相关

    随手记录: 1、iOS开发系列--Objective-C之KVC、KVO 2、ReactiveCocoa初探

网友评论

      本文标题:IOS开发笔记之KVC与KVO的区别

      本文链接:https://www.haomeiwen.com/subject/uoodettx.html