属性监听器
谁需要被监听,就调用addObserver:(被谁监听) forKeyPath:(监听哪个属性) options:NSKeyValueObservingOptionNew(枚举,需要监听新值还是旧值) context:nil];
-
然后监听者在自己的类里面实现一个监听方法
(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
change传入的是一个字典,里面存了当时需要监听的属性新值或旧值或者新旧值
每次监听必须要的销毁方法中移出监听否则会出现内存问题
自定义提示宏
#define keyPath(objc,keyPath) @(((void)objc.keyPath,#keyPath))