//创建Student类别继承NSObject
#import <Foundation/Foundation.h>
@interface Student : NSObject
@property (nonatomic,strong)NSString *name;
@property (nonatomic,strong)NSString *old;
@end
@property (nonatomic,strong)Student *student;
- (void)viewDidLoad {
[super viewDidLoad];
// 使用步骤
1. 注册,指定被观察者的属性,
2. 实现回调方法
3. 移除观察
_student= [[Student alloc]init];
_student.name = @"测试";
_student.old = @"10";
[_student addObserver:self forKeyPath:@"old" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:NULL];
}
// 点击改变对象的属性
- (IBAction)KVOButton:(UIButton *)sender {
_student.old = @"100";
}
// 回调方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
{
if ([keyPath isEqualToString:@"old"]) {
NSLog(@"%@",_student.old);
}
}
//销毁
- (void)dealloc
{
[_student removeObserver:self forKeyPath:@"old"];
}