RunTime动态添加实例方法

动态添加方法,就像懒加载 只有使用的时候才会加到内存中去,这样性能更好。
来不及解释了 直接看如何实现 ```


#import "Teacher.h"
#import <objc/runtime.h>

void eat(id self, SEL sel, NSString *str1, NSString *str2) {
    
    NSLog(@"%@ %@", str1, str2);
}


@implementation Teacher


+ (BOOL)resolveInstanceMethod:(SEL)sel {
    
    if (sel == NSSelectorFromString(@"eat:with:")) {
        
         /**
         *  动态添加方法
         *
         *  self cls:为哪个类添加方法
         *  sel  SEL:添加方法的方法编号(方法名)是什么
         *  IMP  IMP:方法实现
         *  const char * types方法类型
         *
         *  返回是否添加成功
         **/
        BOOL isAddmethod = class_addMethod(self, sel, (IMP)eat, "V#:@@");
        return isAddmethod;
    }
    
    return [super resolveInstanceMethod:sel];
}

@end

外部调用 :

    Teacher *teacher = [[Teacher alloc] init];
    
    [teacher performSelector:@selector(eat:with:) withObject:@"banana" withObject:@"zui"];

暂时写到这里了。

另外.....

我的愿望是.......

世界和平.........

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容