objc.h
runtime.h
// 查找IMP
IMP class_getMethodImplementation(Class cls, SEL sel) {
if (!cls || !sel) return nil;
IMP imp = lookUpImpOrNil(cls, sel);
if (!imp) {
... // 執(zhí)行動態(tài)綁定
}
IMP imp = lookUpImpOrNil(cls, sel);
if (!imp) return _objc_msgForward; // 這個是用于消息轉(zhuǎn)發(fā)的
return imp;
}
(實例方法)調(diào)用方法時 在ceche(objc_cache)中查找->methodLists ->是否有動態(tài)綁定(resolveInstanceMethod) ->父類的 methodLists -> 消息轉(zhuǎn)發(fā)
(類方法)和實例相似 不同的是從元類(metaClass)(Class _Nonnull isa OBJC_ISA_AVAILABILITY)中查找.
runtime.h
->名稱
->參數(shù)
->實現(xiàn)