#import "Person.h"
#import <objc/runtime.h>
@implementation Person
+ (BOOL)resolveClassMethod:(SEL)sel {
// class: 给哪个类添加方法
// SEL: 添加哪个方法
// IMP: 方法实现 => 函数 => 函数入口 => 函数名
// type: 方法类型:void用v来表示,id参数用@来表示,SEL用:来表示
//aaa不会生成方法列表
// Method exchangeM = class_getInstanceMethod([self class], @selector(eatWithPersonName:));
// class_addMethod([self class], sel, class_getMethodImplementation(self, @selector(eatWithPersonName:)),method_getTypeEncoding(exchangeM));
if (sel == NSSelectorFromString(@"eat")) {
class_addMethod(self, @selector(eat), (IMP)eat, "v@:");
return YES;
} else if (sel == NSSelectorFromString(@"writeCode")) {
NSLog(@"我在写");
return YES;
}
return [super resolveClassMethod:sel];
}
void eat(id self,SEL sel){
NSLog(@"eat--------");
}
调用
- (void)addmethods2 {
Person *person = [[Person alloc] init];
SEL select = NSSelectorFromString(@"eat");
[Person resolveClassMethod:select];
[person performSelector:@selector(eat)];
}