美文网首页
KVO和KVC理解

KVO和KVC理解

作者: Ryan_RH | 来源:发表于2017-02-20 10:45 被阅读0次

 一、KVO(Key-Value-Observing)

键值观察者模式,说白了就是当你监听的值发生变化时,会收到对应的通知。


一般分为三步:

注册监听

使用方法:

1.添加KVO监听者

**@paramobserver 观察者(监听器)

*@paramkeyPath  属性名(要观察的属性)

*@paramoptions

*@paramcontext  传递的参数*/

- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void*)context;

例子:

//为对象p添加一个观察者(监听器)[p addObserver: self  forKeyPath:@"name" options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew context:@"test"];

2.设置监听事件

/** *  当利用KVO监听到某个对象的属性值发生了改变,就会自动调用这个

 * *@paramkeyPath 哪个属性被改了 

*@paramobject  哪个对象的属性被改了 

*@paramchange  改成咋样

 *@paramcontext 当初addObserver时的context参数值 */

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void*)context{   

 NSLog(@"%@ %@ %@ %@", object, keyPath, change, context);

}

3.取消监听

//释放KVO监听

-(void)dealloc{    

[p removeObserver: self forKeyPath:@"test"];

}


二、KVC(Key-Value-Coding)

键值编码模式,说白了就是通过指定的key获得想要的值value,而不是通过调用Setter、Getter方法访问。


1 .访问私有变量

一个类中的私有变量,不能直接通过Setter、Getter方法访问。但是却可以通过KVC来访问。

2. 使用KVC直接访问 NSArray 或者 NSSet 的属性值

3. 使用KVC将字典(json)转化成模型


注意:

(1). key的值必须正确,如果拼写错误,会出现异常

(2). 当key的值是没有定义的,valueForUndefinedKey:这个方法会被调用,如果你自己写了这个方法,key的值出错就会调用到这里来

(3). 因为类key反复嵌套,所以有个keyPath的概念,keyPath就是用.号来把一个一个key链接起来,这样就可以根据这个路径访问下去

(4). NSArray/NSSet等都支持KVC

相关文章

  • delegate和notification区别,分别在什么情况下

    KVC(Key-Value-Coding)KVO(Key-Value-Observing)理解KVC与KVO(键-...

  • KVC,KVO

    KVC , KVO KVC和KVO的区别及应用 KVC/KVO原理 1. KVC键值编码 KVC,即是指NSKey...

  • KVC、KVO

    KVC、KVO探识(一)KVO和KVO的详细使用 KVC、KVO探识(二)KVC你不知道的东西 KVC、KVO探识...

  • ios基础——KVO、KVC

    KVO和KVC常见问题: 1.KVC和KVO是什么.2.KVC和KVO的原理是什么3.KVC和KVO的使用场景4....

  • 可能碰到的iOS笔试面试题(7)--KVO-KVC

    KVC-KVO KVC的底层实现? KVO的底层实现? 什么是KVO和KVC? KVO的缺陷? KVO是一个对象能...

  • KVO和KVC理解

    一、KVO(Key-Value-Observing) 键值观察者模式,说白了就是当你监听的值发生变化时,会收到对应...

  • KVO 和 KVC 理解

    一,概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就...

  • KVC 和 KVO

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

  • KVO与KVC简单理解

    KVO与KVC简单理解 ///////////////////////////////////////我是该死的分...

  • KVC、KVO的本质

    这篇文章介绍KVC、KVO的本质。如果你对KVC、KVO不了解,推荐先查看其用法:KVC和KVO学习笔记[http...

网友评论

      本文标题:KVO和KVC理解

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