美文网首页
iOS ---- KVO的内部实现原理

iOS ---- KVO的内部实现原理

作者: 对酒当歌_人生几何 | 来源:发表于2016-07-23 13:58 被阅读0次

    Key-Value Observing (KVO)

    KVO:当指定的对象的属性被修改了,允许对象接收到通知的机制。

    [persion addObserver : self forKeyPath : @"age" options : NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew context : nil ];

    只要当前类中 age 这个属性发生的变化都会触发到以下的方法

    • (void)observeValueForKeyPath:(NSString *)keyPath

    ofObject:(id)object

    change:(NSDictionary *)change

    context:(void *)context

    同时不要忘记在 dealloc中移除监听

    -( void )dealloc{

    [ self . persion removeObserver : self forKeyPath : @"age" ];

    }

    下面就来看看它的实现原理

    QQ20160723-0.png QQ20160723-1.png

    通过上面图片可以看出 当某个类第一次被监听时,系统会在运行时期动态地创建一个继承XqPersion的NSKVONOtifying_XqPersion类

    在这个派生类中,重写基类中任何被观察属性的setter方法,在setter方法中实现真正的通知机制.

    在该类中重写了监听属性的set方法,来通知监听器

    • (void)setAge:(int)age

    {

    [super setAge:age];

    [坚听器 observeValueForKeyPath:@"age" ofObject:self change:@{} context:nil];

    }

    相关文章

      网友评论

          本文标题:iOS ---- KVO的内部实现原理

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