註冊
[_textLabel addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:nil];
_textLabel 被觀察者 被觀察者 必須是一個對象 (本人試過多次數組好像不行)
self 觀察者
options:
NSKeyValueObservingOptionNew 把更改之前的值提供給處理方法
NSKeyValueObservingOptionOld 把更改之後的值提供給處理方法
NSKeyValueObservingOptionInitial 把初始化的值提供給處理方法,一旦註冊,立馬就會調用一次。通常它會帶有新值,而不會帶有舊值。
NSKeyValueObservingOptionPrior 分2次調用。在值改變之前和值改變之後。
移除觀察者 必須移除
- (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath context:(nullable void *)context
監聽回調
- (void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id)object change:(nullable NSDictionary<NSString*, id>*)change context:(nullable void *)context {
if ([keyPath isEqualToString:@"count"]) {
NSLog(@"");
}
}
keyPatch 標記 通過這個來確定是哪一個觸發的方法
object 被觀察的對象
change 改變的值
context 附帶的參數 (可以強轉)