美文网首页
iOS KVO底层实现原理

iOS KVO底层实现原理

作者: 出来遛狗了 | 来源:发表于2020-03-04 14:29 被阅读0次

很多人只知道怎么使用KVO,但是并不知道其中的实现原理,只知道是用runtime实现。但是面试的时候这种回答不是面试官想要的。所以写下这篇文章,希望迷惑的同学能深入了解KVO的底层实现原理。(ps: 属于个人总结,如果有不对的地方,请在评论里指出,谢谢)
首先我们为了实现KVO,我们新建一个Person类,包含了name属性。


image.png

我们在viewController中来监听name的改变


image.png

其实监听name的变化就是监听了setName方法。
接下来,我们就讲解一下,是怎么监听的setName的方法。
当我们给person添加observer时,其实系统帮我们创建了一个Person的子类NSKVONotifying_Person
通过将person对象的isa指向NSKVONotifying_Person


image.png

然后在NSKVONotifying_Person里面重写setName方法。
我们可以用伪代码的方式来解析重写的setName
在NSKVONotifying_Person中

- (void)setName:(NSString *)name{
    [observe willChangeValueForKey:@"name"];
    [super setName:name];
    [observe didChangeValueForKey:@"name"];
    [observe observeValueForKeyPath:key ofObject:self change:nil context:nil];
}

这样就能监听到name的变化了
以上就是我对KVO的解析了。

相关文章

  • iOS - KVO

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

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

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

  • 底层原理

    iOS底层原理总结 - Category的本质 KVO详解及底层实现青少年一定要读的KVO指南 iOS 底层解析w...

  • 关于KVO底层Runtime实现的那点事

    有很多公司iOS面试都会被问到KVO底层的实现。网上也有很多篇关于KVO的底层原理,但是都是用willChange...

  • Today面试

    Runloop 底层原理Kvo 底层原理ARC 底层原理 如何实现GCD 底层原理Block 底层原理Aut...

  • iOS-底层原理21-KVO(下)

    iOS-底层原理21-KVO(下) 《iOS底层原理文章汇总》[https://www.jianshu.com/p...

  • iOS-底层原理-自定义KVO

    1.自定义KVO 1.上一篇博客了解了iOS 系统KVO的底层实现原理,那么这里进行自定义KVO,更好的理解原理和...

  • iOS底层原理:weak的实现原理

    iOS底层原理:weak的实现原理iOS底层原理:weak的实现原理

  • KVC

    KVC原理剖析 - CocoaChina_让移动开发更简单 iOS开发底层细究:KVC和KVO底层原理 | iOS...

  • iOS-KVO(二) 使用注意点

    iOS-KVO(一) 基本操作iOS-KVO(二) 使用注意点iOS-KVO(三) 窥探底层实现iOS-KVO(四...

网友评论

      本文标题:iOS KVO底层实现原理

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