- @interface Person : NSObject
- @property (nonatomic, copy) NSString *name;
- @end
- - (void)viewDidLoad {
- [super viewDidLoad];
-
- Person *person = [[Person alloc] init];
- person.name = @"珠珠";
- [person addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:@"testKVO"];
-
- person.name = @"小雅";
- [person removeObserver:self forKeyPath:@"name"];
-
- }
- - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
- NSLog(@"keypaht=%@, object=%@, change=%@, context=%@", keyPath,object, change, context);
- //NSKeyValueChangeOldKey 可以用"old"来代替,但是获取的话,如果系统修改old为"Old"的话,那会获取不到,所以建议用NSKeyValueChangeOldKey
- NSLog(@"获取被修改前的值=%@", change[NSKeyValueChangeOldKey]);
- //NSKeyValueChangeNewKey 可以用"new"来代替,但是获取的话,如果系统修改new为"New"的话,那会获取不到,所以建议用NSKeyValueChangeNewKey
- NSLog(@"获取修改后的值=%@", change[NSKeyValueChangeNewKey]);
- }