Runtime之强行调用被覆盖类中的方法

1.关于类别覆盖原有类方法后,我们任然要想调用其原有类的方法。所用的底层转换方式

#import 
#import "CFRuntimeKit.h"
#import "CFPerson.h"
#import "CFPerson+Category1.h"
#import "CFPerson+Category2.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        CFPerson *person = [[CFPerson alloc]init];
        //方法覆盖问题验证(后面编译的分类方法在最前面,优先访问它)
        [person eating];
        //查看方法列表
        NSArray *methodArr = [CFRuntimeKit fetchMethodList:[CFPerson class]];
        NSLog(@"methodArr:%@",methodArr);
        
        /*
         *调用person类的eating方法
         */
        unsigned int outCount = 0;
        Method *methodList = class_copyMethodList([CFPerson class], &outCount);
        IMP lastImp = NULL;
        SEL lastSel = NULL;
        for (unsigned int i=0; i

你可能感兴趣的:(Runtime之强行调用被覆盖类中的方法)