一、runtime是一套底层的C语言库,编译器在编译object-C代码是,最终都转换成了runtime的C语言代码。
例如:[UIView alloc];在编译时会转换成objc_msgsend(UIView,@selector(alloc));
每一个对象内都有一个isa指针,它指向对象所在的类(类中也有一个isa指针,指向其元类metaclass),在调用方法时,编译器会通过isa指针一层层向上找,直到找到根元类(root metaclass),如果没有找到,就会报错。找到后通过函数指针调用函数;
二、通过添加#import <objc/runtime.h>,我们可以调用runtime提供的方法,实现类的创建、方法替换、方法实现等操作;
三、一些著名的第三方库都用到了runtime:AFNetworking、SDWebImage等;KVO的底层实现也用到过runtime;
时间: 2024-11-05 12:37:31