IOS观察者模式之KVO代码
首先要对进行观察的对象进行注册
实现回调方法
对象释放的时候要移除观察者
1、准备要观察的对象
@interface Example : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *mobile;
@end
2、在这个对象实现回调方法(如果在这里观察属性改变的话,注意如果在其他的地方观察,要记得移除观察者)
#import "Example.h"
@implementation Example
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
if ([keyPath isEqualToString:@"name"]) {
NSLog(@"keyPath:%@\n object:%@\n change:%@\n context:%@",keyPath,object,change,context);
}
}
-(void)dealloc{
[self removeObserver:self forKeyPath:@"name"];
}
@end
3、使用
- (void)viewDidLoad {
[super viewDidLoad];
Example *object=[[Example alloc]init];
//观察name属性 ,new是改变的新值,old是旧值
[object addObserver:object forKeyPath:@"name" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:@"它的name属性改变了"];
object.name=@"张三";
object.name=@"李四";
}