添加键值观察者
@interface NSObject(NSKeyValueObserverRegistration)
- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context;
//任何对象都可以调用去添加键值观察者
//keyPath:要观察的值
//options:操作新值还是旧值
响应键值观察(自动调用,实现即可,值变化自动调用)
@interface NSObject(NSKeyValueObserverRegistration)
- (void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id)object change:(nullable NSDictionary<NSString*, id> *)change context:(nullable void *)context;
//keyPath:观察的值
//object:变化的对象
//change:字典,有新值或者旧值