美文网首页
OC 基础-KVO(1)

OC 基础-KVO(1)

作者: 我是卖报的小行家 | 来源:发表于2021-03-02 21:38 被阅读0次

KVO:全称:key-value-observing,俗称“键值监听”,可以用于监听某个对象属性值的变化
内部实现(NSKVONotifying)
比如说监听一个对象(Person)的属性age,那么就会生成一个新的类(NSKVONotifying_Person)NSKVONotifying_Person是使用Runtime创建的一个新的类,是Person的子类。self.person.isa == NSKVONotifying_Person

那么在NSKVONotifying_Person类的age属性的set方法里面

-(void)setAge:(int)age{
NSSetIntValueAndNotify();
}

//伪代码

void  _NSSetIntValueAndNotify(){
[self willChangeValueForKey:@"age"];
[super setAge:age]; //原来的setter实现
[self didChangeValueForKey:@"age"];
}
-(void)didChangeValueForKey:(NSString *)key{
//通知监听器,某某属性发生了改变
[observe observeValueForKeyPath:key ofObject:self Change:nil Context:nil];
}
截屏2021-03-02 下午9.36.25.png

补充:person对象监听age属性后
[self.person addObservier:self forKeyPath:@"age" options:options context:nil];
我们使用[self.person Class]得到的对象为Person;
我们使用[object_getClass(self.person)]得到的对象为NSKVONotifying_Person;


小码哥kvo

相关文章

  • 整理面试题

    一、OC语言基础知识剖析 (1)UI卡顿掉帧的原因 (1)什么是KVO? KVO实现原理?如何手动添加KVO? <...

  • OC 基础-KVO(1)

    KVO:全称:key-value-observing,俗称“键值监听”,可以用于监听某个对象属性值的变化内部实现(...

  • swift中KVO和属性观察器

    开篇提醒:OC中的KVO及其KVO的基础知识可参见:深入runtime探究KVO Swift中,原本没有KVO模式...

  • OC知识点整理-(零)内容概要

    我们在OC中基础中,尝尝会被问到下面几个基础方面的问题。 OC基础 Category 关联对象 代理,通知 KVO...

  • iOS面试分享

    OC基础 1.kvo、kvc原理2.runtime、runloop 应用场景3.GCD NSOperation N...

  • OC基础-KVO(2)

    kvo总结问题:iOS用什么方式实现一个KVO?(KVO的本质是什么)答:利用RuntimeAPI动态生成一个子类...

  • iOS知识点小结

    1.KVO1.1> KVO 简介:KVO 是 OC 观察者设计模式的一种实现.KVO 指定一个被观察的对象的属性,...

  • Runtime面试题

    1.oc消息转发流程 2.KVO原理KVO是基于runtime实现的,KVO运用了isa-swizzling将两个...

  • iOS KVO 补充版

    1. 什么是KVO? KVO全称key-value observing; KVO是OC中观察者设计模式的又一个实现...

  • iOS KVO

    1. 什么是KVO? KVO全称key-value observeing; KVO是OC中观察者设计模式的又一个实...

网友评论

      本文标题:OC 基础-KVO(1)

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