鍵值監聽,就是可以監聽對象某個屬性值的變化; 首先,在工程中,新建一個Person的類 在viewController中引入頭文件“Person”,開始測試KVO的使用 運行程式,得出來的值如下: ...
鍵值監聽,就是可以監聽對象某個屬性值的變化;
首先,在工程中,新建一個Person的類
@interface Person : NSObject @property (nonatomic, copy) NSString *name; @end
在viewController中引入頭文件“Person”,開始測試KVO的使用
- (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]); }
運行程式,得出來的值如下: