isa-swizzling到底为何物?

isa-swizzling到底为何物~

抱着学习的心态,我想对它一探究竟。

isa-swizzling其实就是一种isa混编技术。在Apple的官方网站有关于KVO实现机制的解释,其中有提到这个。

isa-swizzling到底为何物?_第1张图片
apple对于kvo实现机制的解释

apple关于kvo的解释中可以看出来kvo的实现也是采用了这种技术~

isa是OC中每一个对象都有的指针~ 关于这个指针想要了解更多可以戳runtime对象模型

isa-swizzling通过修改isa指针的值,使它指向另一个类来达到自己的目的。KVO就是为添加了属性观察的类,动态生成了一个新的类继承于原来的类,通过重写setter方法,在setter方法中调willChangeValueForKey和didChangeValueForKey来通知对象属性值发生改变,并且修改了对象的isa指针,使它指向了新的类,当值修改完成并且通知对象后,会再次把对象的isa指针指向它原来的类。

以上个人理解~ 欢迎补充和指正~

你可能感兴趣的:(isa-swizzling到底为何物?)