美文网首页程序员
iOS KVO原理分析

iOS KVO原理分析

作者: wp_Demo | 来源:发表于2019-01-14 18:59 被阅读0次

通过断点可以看到已经被监听的类的isa指针:

(lldb) p self.person->isa
(Class) $0 = NSKVONotifying_WPPerson

问题是NSKVONotifying_WPPerson何时来的,我尝试在添加监听之前还有之后分别打印NSClassFromString(@"NSKVONotifying_WPPerson")发现NSKVONotifying_WPPerson是在添加观察者之后被创建的.

通过打印NSKVONotifying_WPPerson这个类的方法列表:

- (void)printMethods:(Class)class{
    unsigned int count = 0;
    Method *methods = class_copyMethodList(class, &count);
    for (int i = 0; i < count; i++) {
        Method method = methods[i];
        SEL sel = method_getName(method);
        IMP imp = method_getImplementation(method);
        NSString *methodName = NSStringFromSelector(sel);
        NSLog(@"%@",methodName);
    }
}

2019-01-14 16:11:27.591359+0800 KVO_learn[35003:466572] setArray:
2019-01-14 16:11:36.150872+0800 KVO_learn[35003:466572] class
2019-01-14 16:11:40.639886+0800 KVO_learn[35003:466572] dealloc
2019-01-14 16:22:35.932556+0800 KVO_learn[35003:466572] _isKVOA

断点发现IMP都是指向Foundition框架的

一般的内部执行过程是:

NSKeyValueWillChange
[WPPerson setSteps:]
NSKeyValueDIdChange
NSKeyValueNotifyObserver
observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change
主要注意的是移除观察者时:

1:移除之后isa指针指向了WPPerson
2:但是NSKVONotifying_WPPerson这个类已经被注册过了,不会被销毁,只是ISA指针改变了

相关文章

  • iOS底层学习文章

    iOS黑魔法-Method Swizzling Objective-C 反射机制 KVC原理剖析 KVO原理分析及...

  • iOS - KVO

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

  • Objective-C的本质(4)—— KVO本质

    参考:iOS底层原理总结 - 探寻KVO本质iOS-KVO本质 问题一:kvo如果找到对应的属性 KVO不存在查找...

  • iOS KVO原理分析

    通过断点可以看到已经被监听的类的isa指针: 问题是NSKVONotifying_WPPerson何时来的,我尝试...

  • IOS - KVO原理分析

    本文首发于 个人博客 KVO一直是IOS面试中的重点,下面的面试题你碰到过吗? KVO的底层是如何实现的? add...

  • iOS KVO原理分析

    前言 上一篇文章学习了KVC的原理(键值编码),KVC是由NSKeyValueCoding非正式协议启用的一种机制...

  • iOS-自定义KVO

    前言 iOS-KVO原理分析[https://www.jianshu.com/p/f94a972f6187]这篇文...

  • iOS原理(二)----KVO,KVC

    iOS原理(二)----KVO,KVC KVO KVO的全称是Key-Value Observing,俗称“键值监...

  • iOS高级进阶之KVO

    KVO的原理 分析原理 使用 手动调用 自己实现KVO NSObject+KVOBlock.h NSObject+...

  • IOS KVO原理解析与应用

    IOS KVO原理解析与应用 一、KVO概述 KVO,即:Key-Value Observing,是Objecti...

网友评论

    本文标题:iOS KVO原理分析

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