KVC 简介设值的一个工具,对于指向id的对象,像其内存存取值。这有点像java的反射;
存在如下一个对象,已知其属性name,可取值:
id p=[[Person alloc] init];
NSString *name=[p valueForKey:@"name"];
假设,有一个数组,里面存在一系列的对象,我们想取出某一属性放在一个队列中,如下:
Book *book1=[[Book alloc] init];
book1.name=@"effctive c++";
Book *book2=[[Book alloc] init];
book2.name=@" more effctive c++";
Book *book3=[[Book alloc] init];
book3.name=@" most effctive c++";
NSArray *arr=@[book1,book2,book3];
NSLog(@"%@",[arr valueForKey:@"name"]);
生活中,我们确实存在以上的需求;
KVO指的是设值过程中对其监听的过程,以实现对业务逻辑的校验
//创建一个被监视的对象
Book *book1=[[Book alloc] init];
//设置监听对象
BookObserve *observe=[[BookObserve alloc] init];
//对其存值的监听-这种方法用完后不需要移除监听器
[observe observeValueForKeyPath:@"name" ofObject:book1 change:nil context:@"sadsada"];
//对其存值的监听-02
[book1 addObserver:observe forKeyPath:@"name" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
book1.name=@" most effctive c++";
NSLog(@"%@",book1.name);
//取消对其存值的监听-02
[book1 removeObserver:observe forKeyPath:@"name"];
对于监听对象,无需实现任何代理,因为他是NSObject的派生类
只要在.m文件中实现如下方法即可监听:
#pragma mark keyPath:对象属性 object:对象 change:存取值保存的字典
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
}
分享到:
相关推荐
iOS中KVC-KVO例子,
使用KVC对属性赋值 使用KVC对属性取值 KVC对数组取值 KVO是key value observing, 它是一种非常重要的机制,允许监听属性值的变化
但需要注意的是,键值观察(KVO)是建立在键值编码(Key Value Coding,简称KVC)的基础上,也就是说任何你想使用KVO观察的属性必须符合键值编码。 这个demo主要以字符串、数组为例来学习键值编码和键值观察。 ...
已经拥有一年经验的你真的了解KVC,KVO吗?也许不!以前我以为自己都有上架项目,这都是太基础的东西,但今天我重新回头看了以前做的笔记,真的是书读百遍,其义自见。
关于ios学习中的通知和kvc,kvo案例的整理,基础的oc学习
详细的介绍了KVO与KVC的原理机制,可以有效运用KVO-KVC编程
相信通过这个工程可以让初学者更好的理解iOS的kvc和kvo模式,如果有需要相关文档的可以留言给我。
1.&.批处理 1.(.KE4的简单运算 2.谓词 2.谓词 2.&.格式占位符
主要介绍了iOS 中KVC、KVO、NSNotification、delegate 总结及区别的相关资料,需要的朋友可以参考下
利用runtime简单的实现KVO底层原理,主要是提供了一个KVO的底层思路,和runtime的简单用法.仅供学习和交流使用
这里是我看别人博客写的kvc与kvo,自己写的代码,本来不打算收费,但是找不到免费的按钮在哪,所以就选了最小的资源分数1.
KVO_App iOS Objective-C中KVC和KVO的基本实现
【Debugging Tips, Searching, Notifications, KVC,KVO】[PDF] [iPhone/iPad/iOS]
英文文档 iso kvo kvc "mvc with less code".
一个kvo 的demo,kvo的用法。kvc/kvo的用法
性的监听,参见探索KVC/KVO的实现原理KVC 一 和 探索KVC/KVO的实现原理KVO 二 虽然 iOS 提供了对对象属性的观察者模式机制,但想想很多 Android 同学们应该不会在意。这不是很容易么,我 分分钟也能写一个
KVC_KVOTest Demo代码 KVC KVO IOS 观察者 Observe
七大传值方式:代理,单例,属性,通知,Block,KVC,KVO传值
iOS KVC实现原理,供参考学习。适合有一定基础的。自己研究的,不喜勿喷。