如何使用KVO
2016-02-26 本文已影响252人
yyMae
用法
KVO键值观察,使用起来非常方便
举个例子:比如你想要再某个值改变的时候执行一个方法(每次改变都要执行)
你只需要坐到以下两点即可:
-
给某对象添加观察者
[某对象 addObserver:self forKeyPath:@"你要观察的属性名" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil]; -
实现回调方法,该方法在你所观察的值改变的时候会触发
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
示例代码
#import <UIKit/UIKit.h>
@interface YYListView : UIView<UITableViewDataSource,UITableViewDelegate>
//该属性设为要观察的值
@property (nonatomic, assign) NSInteger index;
@end
//在控制器中创建一个YYListView的对象,给它添加观察者
- (void)viewDidLoad{
[super viewDidLoad];
YYListView *LV = [YYListView alloc]init];
[LV addObserver:self forKeyPath:@"index" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
//每当值改变就调用action方法
[ self action];
}