美文网首页
KVO原理探究

KVO原理探究

作者: 张家杰仔 | 来源:发表于2017-08-07 13:46 被阅读36次

kvo原理:利用运行时,生成对象子类,并生成子类的对象,并替换原来的对象的isa指针(地址不发生变化,变化的是值),并且重写set方法。

//添加监听
[self addObserver:<#(nonnull NSObject *)#> forKeyPath:<#(nonnull NSString *)#> options:<#(NSKeyValueObservingOptions)#> context:<#(nullable void *)#>]
//实现方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{

}


typedef NS_OPTIONS(NSUInteger, NSKeyValueObservingOptions) {
    NSKeyValueObservingOptionNew ,//返回新值
    NSKeyValueObservingOptionOld ,//返回老值
    NSKeyValueObservingOptionInitial ,//再注册会发送一次通知,改变也会发送一次通知
    NSKeyValueObservingOptionPrior //改变之前发送一次通知,改变之后也会发送一次通知

};

监听数组的变换

[self addObserver:self forKeyPath:@"dataArray" options:NSKeyValueObservingOptionNew context:nil]; [[self mutableArrayValueForKeyPath:@"dataArray"] addObject:@"one"];

多级路径的监听

+ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key{
    
    NSSet *keySet = [super keyPathsForValuesAffectingValueForKey:key];
    if ([key isEqualToString:@"person"]) {
        NSSet *set = [NSSet setWithObject:@"_person.age"];
        keySet = [keySet setByAddingObjectsFromSet:set];
    }
    return keySet;
}

相关文章

  • KVO原理探究

    kvo原理:利用运行时,生成对象子类,并生成子类的对象,并替换原来的对象的isa指针(地址不发生变化,变化的是值)...

  • KVO 原理探究

    [TOC] KVO 研究 没有使用KVO和使用KVO的变化 测试的类Person 通过 objc_copyClas...

  • KVO原理探究

    KVO(Key-value observing)提供一种在其它对象的属性更改时通知观察它的对象的一种机制。当然它和...

  • 自定义KVO

    导语: 如果对KVO原理不是很熟悉的,可以参考下简书另一篇文章《ios KVO原理探究》,主要是通过模拟KVO底层...

  • 2018-02-14

    探究KVO的底层实现原理 addObserver:forKeyPath:options:context:各个参数的...

  • 探究KVC的底层实现原理

    慕课网地址 以前写了关于的实现原理的文章,探究KVO的底层实现原理,现在我们也探究一下的底层实现 原理 的全称是K...

  • 探究KVO底层原理

     本文将会分成三部分,一是简述KVO的底层原理,二是详解系统的KVO,三是自己手动实现KVO,我们通过断点调试、N...

  • iOS KVO原理探究

    通过指定类的属性名称,来达到类属性值的变化,分为手动和自动俩种模式,其中手动模式 需要在改变属性值的前后分别实现W...

  • iOS KVO原理探究

    导语: KVO全称Key Value Observing,直译为键值观察。KVO 作为 iOS 中一种强大并且有效...

  • KVC/KVO原理探究

    提到KVC/KVO大家一定不会陌生,用起来也很简单,下面一起来探究一下它们的实现原理。 一、KVC 1、查找过程 ...

网友评论

      本文标题:KVO原理探究

      本文链接:https://www.haomeiwen.com/subject/dzbolxtx.html