iOSiOS学习IOS

iOS之KVC与KVO

2016-10-23  本文已影响91人  小僧有礼了

KVC:

setValue:forKeyPath:

注意:
- 搜索过程中不管这些方法、成员变量是否是私有都可以被读取,不会因为私有二导致失败。
- 如果调用了setValue:forUndefineKey和valueforUndefineKey:这两个方法,而你又没有重写,系统会崩溃并且抛出异常

KVO:

我们不需要写过多的代码,只需要注册这个监听,就能很好的监听某一属性的值的变化,然后做出对应的操作。

//添加观察者
    - (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context;
[被观察者的对象 addObserver:观察者 forKeyPath:@"被观察者的属性" options:NSKeyValueObservingOptionNew(更新的值) | NSKeyValueObservingOptionOld(更新前的值) context:nil];


//键值修改时触发回调
        //参数1:属性 名称     参数2:被观察者对象     参数3:修改的值
    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;
    
//移除观察者
    - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;
上一篇下一篇

猜你喜欢

热点阅读