Runtime(动态添加方法)

A问:  有没有使用过performSelector,什么时候使用?动态添加方法的时候使用过?怎么动态添加方法?runtime?为什么要动态添加方法?  

 

 

B:Runtime(动态添加方法):OC都是懒加载机制,只要一个方法实现了,就会马上添加到方法列表中.

    app:免费版,收费版

    QQ,微博,直播等等应用,都有会员机制

    

// 任何方法默认都有两个隐式参数,self,_cmd

// 什么时候调用:只要一个对象调用了一个未实现的方法就会调用这个方法,进行处理

// 作用:动态添加方法,处理未实现

+ (BOOL)resolveInstanceMethod:(SEL)sel

{

    // [NSStringFromSelector(sel) isEqualToString:@"eat"];

    if (sel == NSSelectorFromString(@"run:")) {

        // eat

        // class: 给哪个类添加方法

        // SEL: 添加哪个方法

        // IMP: 方法实现 => 函数 => 函数入口 => 函数名

        // type: 方法类型

        class_addMethod(self, sel, (IMP)aaa, "v@:@");

        

        return YES;

    }

    

    return [super resolveInstanceMethod:sel];

 

}

 

原文地址:https://www.cnblogs.com/liuzhenjie/p/5243568.html