动态添加方法,就像懒加载 只有使用的时候才会加到内存中去,这样性能更好。
来不及解释了 直接看如何实现 ```
#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"];
暂时写到这里了。
另外.....
我的愿望是.......
世界和平.........