1、创建一个类Person
声明一个方法:- (void)talk;
2、在vc中实例化person对象 并实现:- (void)talk2;
3、实现replace函数可以将person调用的talk替换成talk2
代码如下:
- (void)replace { Person *man = [[Person alloc] init]; man.name = @"成龙"; SEL original = @selector(talk); SEL replacement = @selector(talk2); Method a = class_getInstanceMethod([Person class], original); Method b = class_getInstanceMethod([self class], replacement); if (class_addMethod([Person class], original, method_getImplementation(b), method_getTypeEncoding(b))) { class_replaceMethod([Person class], replacement, method_getImplementation(a), method_getTypeEncoding(a)); } else { method_exchangeImplementations(a, b); } [man talk]; }
RunTime-消息的拦截与替换,布布扣,bubuko.com
原文:http://blog.csdn.net/fucheng56/article/details/24365587