突然有个想法要写一下kvo,虽然网上的资料一大把,但是个人感觉有些文章还是有些错误,趁着这段时间还有点时间就来写一下kvo的是例,算是来个kvo的使用来次正名吧
想一想对象之间的通信有哪几种?(根据我的所知,主要有单例模式,通知中心,代理模式以及block,用过代理模式和block的,应该都能知道,这两种模式通讯之间的方式几乎是一模一样,ios4.0之后,block用的越来越多,4.0之前,几乎用的是代理模式,当然通讯方式也还包括我现在正要讲的kvo)
kvo主要用来做两个对象之间的通信,kvo的全称,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了,这里我提供的实例就是人的银行账号与人之间的一个通讯.
先来看看kvo的使用步骤
1.注册通知对象,依靠下面这个方面
- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context 这个方法的参数来解释一下,observer是指谁来监听这个对象,keyPath是指我们需要监听的对象的某一个属性,options是指监听的对象是什么,context是指一些私有的参数,比如比如上下文
2.回调函数
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
代码难得贴,打个包去下载好了,下载链接如下