美文网首页
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 方法调用流程

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