美文网首页
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

    [toc] 参考 KVO KVC 【 iOS--KVO的实现原理与具体应用 】 【 IOS-详解KVO底层实现 】...

  • iOS面试题03-Foundation(★★★)

    《2018 iOS面试题系列》 一、KVO内部实现原理 KVO是基于runtime机制实现的 当某个类的对象第一次...

  • iOS KVO内部实现原理

    KVO基本概念:主要用来监听某个对象的某个属性的变化,当发生变化的时候,观察者会调用对应的函数,实现对应的功能。 ...

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

    Key-Value Observing (KVO) KVO:当指定的对象的属性被修改了,允许对象接收到通知的机制。...

  • iOS面试题(4) KVO KVC

    声明,不是原创,笔记均来自 群主大神~ 手动实现KVO 什么是KVO和KVC? KVO内部实现原理 NSNotif...

  • KVO底层原理分析

    一、 KVO内部实现原理 KVO是基于 runtime机制实现的,使用了isa 混写(isa-swizzling)...

  • iOS 自定义KVO

    自己实现kvo之前,需要知道iOS系统对kvo的实现。 系统实现kvo的原理 这依赖了OC强大的runtime特性...

  • IOS底层(三) KVO底层实现原理

    @[TOC](IOS底层(三) KVO底层实现原理 ) 一,KVO简述 KVO的全称 Key-Value Obse...

  • KVO(Key Value Observing)

    KVO的作用: 监听某个对象属性值的改变 KVO的内部实现原理: 1 KVO是基于运行时(runtime)来实现的...

  • KVO内部实现原理

    KVO是基于runtime机制实现的 当某个类的属性对象第一次被观察时,系统就会在运行期动态地创建该类的一个派生类...

网友评论

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

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