Runtime(动态添加方法)

Posted liuzhenjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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, "[email protected]:@");

        

        return YES;

    }

    

    return [super resolveInstanceMethod:sel];

 

}

 

以上是关于Runtime(动态添加方法)的主要内容,如果未能解决你的问题,请参考以下文章

Runtime(运行时)003-动态添加方法

iOS-Runtime之class_addMethod给类动态添加方法

使用runtime给类动态添加方法并调用 - class_addMethod

Runtime 实现 动态添加属性

iOS Runtime 动态添加属性不能添加intrinsic类型

为一个类动态的添加属性