OC KVO

来源:互联网 发布:mac找不到照片宗卷 编辑:程序博客网 时间:2024/05/22 15:50


    Kvo是Cocoa的一个重要机制,他提供了观察某一属性变化的方法,极大的简化了代码。

    这种观察-被观察模型适用于这样的情况,比方说根据A(数 据类)的某个属性值变化,B(view类)中的某个属性做出相应变化。对于推崇MVC的cocoa而言,kvo应用的地方非常广泛。(这样的机制听起来类 似Notification,但是notification是需要一个发送notification的对象,一般是 notificationCenter,来通知观察者。而kvo是直接通知到观察对象。)

适用kvo时,通常遵循如下流程:

1 注册:

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

keyPath就是要观察的属性值,options给你观察键值变化的选择,而context方便传输你需要的数据(注意这是一个void型)

2 实现变化方法:

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

change里存储了一些变化的数据,比如变化前的数据,变化后的数据,

如果注册时context不为空,这里context就能接收到。

3 移除

[removeObserver: forKeyPath]

一般写于dealloc