消息发送机制和消息转发机制

消息发送机制:使用了运行时,通过selector快速查找IMP的一个过程。

1、NSObject -> isa指针 对应着方法列表 method list

selectors 存放着 char * 对应  run1方法名称(字符串),整个是映射表。

objc_msgSend()这个是编译器的方式

[preson run] => objc_msgSend(person,SEL,@"10")

查找方式(一直往上找):

实例对象 isa-》类对象 isa-》元类 isa-》根元类 isa

isa指针是查找类的结构(ivar methods等等)

消息转发机制:IMP找不到的时候,通过一些方法做转发处理。

前提是定义了但是没有实现。

先走

NSObject里的

动态方法解析

+(BOOL)resolveClassMethod:(SEL)sel

+(BOOL)resolveInstanceMethod:(SEL)sel

再走

快速消息转发

forwardingTargetForSelector:(SEL)aSelector

最后走

标准消息转发

forwardInvocation:(NSInvocation *)aninvocation

methodSignatureForSelector:(SEL)aSelector

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

推荐阅读更多精彩内容