美文网首页
2018-09-10 方法调用流程

2018-09-10 方法调用流程

作者: OneStepAway | 来源:发表于2018-09-10 11:29 被阅读0次

objc.h


屏幕快照 2018-09-10 上午11.26.24.png

runtime.h


类内部实现

// 查找IMP
IMP class_getMethodImplementation(Class cls, SEL sel) {
if (!cls || !sel) return nil;
IMP imp = lookUpImpOrNil(cls, sel);
if (!imp) {
... // 执行动态绑定
}
IMP imp = lookUpImpOrNil(cls, sel);
if (!imp) return _objc_msgForward; // 这个是用于消息转发的
return imp;
}

(实例方法)调用方法时 在ceche(objc_cache)中查找->methodLists ->是否有动态绑定(resolveInstanceMethod) ->父类的 methodLists -> 消息转发
(类方法)和实例相似 不同的是从元类(metaClass)(Class _Nonnull isa OBJC_ISA_AVAILABILITY)中查找.

runtime.h


方法结构体

->名称
->参数
->实现

相关文章

  • 2018-09-10 方法调用流程

    objc.h runtime.h // 查找IMPIMP class_getMethodImplementatio...

  • iOS底层之alloc流程

    调用alloc方法底层流程 调用alloc方法FCPerson *p = [FCPerson alloc]. 调用...

  • hook forwardingTargetForSelector

    方法调用流程 runtime中具体的方法调用流程大致如下: 1.首先,在相应操作的对象中的缓存方法列表中找调用的方...

  • 方法调用流程

    怎么调用对象相应的方法?对象方法:类对象的方法列表 类方法:元类中方法类表 1.通过isa去对应的类中查找; 2....

  • JobSchedulerService 源码分析 -- canc

    一、 调用流程 二、JobSchedulerService 取消 job 流程 1. 最终调用该方法 2. 从 m...

  • 优秀的流程图

    阿里风险识别图 支付宝极简版 SDK 调用方法-调用流程

  • KVC

    setValue:ForKey:的调用流程 1、调用setValvue:ForKey: 方法,首先会去寻找setK...

  • 【iOS-RunTime系列三】objc_msgSend()

    objc_msgSend() OC的方法调用,消息机制,给方法调用者发送消息 objc_msgSend 的执行流程...

  • 属性操作

    流程 在jQuery.fn.prop内部调用了access方法。access方法内部,根据参数的情况,花式调用jQ...

  • 三、RocketMQ-Producer启动流程

    一、UML图例 二、大致流程说明: 流程为非事务消息流程 在main方法中调用 new DefaultMQProd...

网友评论

      本文标题:2018-09-10 方法调用流程

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