iOS分享之路-快速开发电商平台程序员技术重塑

【iOS分享之路-快速上手Runtime】三、动态添加方法

2017-03-18  本文已影响3980人  全栈攻城狮DWQ
DWQ-LOGO.jpeg

引述

在我们的iOS开发过程中,如果一个类方法非常多,加载类到内存的时候也比较耗费资源,需要给每个方法生成映射表,可以使用动态给某个类,添加方法解决。做到优化内存,节省资源的效果。

Runtime动态添加方法

动态给某个类添加方法的步骤,假如我们定义一个Cat类,给他动态添加一个eat的方法。

+ (BOOL)resolveInstanceMethod:(SEL)sel
{
    //    NSLog(@"%@",NSStringFromSelector(sel));
    // 动态添加eat方法
    
    if (sel == @selector(eat:)) {
        /*
         cls:给哪个类添加方法
         SEL:添加方法的方法编号是什么
         IMP:方法实现,函数入口,函数名,需要定义一个函数,也就是方法的实现部分
         types:方法类型,如何知道类型,
         */
        // @:对象 :SEL
        class_addMethod(self, sel, (IMP)eatFunc, "v@:@");    
        // 处理完
        return YES;
    }
    
    return [super resolveInstanceMethod:sel];
}

dynamicADD.png

Runtime动态添加方法的实现Demo

Runtime动态添加方法demo
广大书友记得给个喜欢,在GitHub上给个Star噢!

上一篇 下一篇

猜你喜欢

热点阅读