KVO的基本使用步骤

  1. 添加观察者
1 [被观察者 addObserver:观察者 forKeyPath:@"被观察的属性" options:<#(NSKeyValueObservingOptions)#> context:<#(nullable void *)#>]

 

  1. 实现监听方法
1 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context

 

  1. 移除观察者
[_p removeObserver:self forKeyPath:@"被观察的属性"];

 

  1. 依赖属性的用法
+ (NSSet<NSString *> *)keyPathsForValuesAffecting<#DependentKey#>
{
    return [NSSet setWithObjects:@"<#keyPath#>", nil];
}

 

KVO原理分析

  1. 添加观察这时 -> 系统自动生成了被观察者的子类
  2. 被观察者的isa 指针正想子类 并自动添加了一些方法
  3. 移除操作 -> 被观察者isa指针从子类指回父类
posted on 2018-12-11 16:58  莫小哈  阅读(105)  评论(0)    收藏  举报