performSelector... IMP

1.+ (void)load;

函数的调用发生在程序的哪个阶段?

A.预处理阶段
B.编译阶段
C.汇编阶段
D.链接阶段

E.不在以上阶段

2.众所众知 可以在+ (void)load方法里可以进行类方法的交换method_exchangeImplementation(),
那么可以在+(void)load方法里面进行实例方法的交换吗?

IMP 表示函数实现的地址

performSelector...
里的方法在程序执行的过程中才会判断,是否实现。

先从方法缓存表里面查找、再到方法列表里面查找、再到父类方法列表里面查找、知道NSObject,实在找不到、可以调用forwardingTargetForSelector:把这个方法传给其他的对象处理。类似C++的多继承,但是比多继承更轻巧

感觉今天学到的真少....

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容