//
// ViewController.m
// runtime--self
#import "ViewController.h"
#import <objc/runtime.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//交换类的两个方法实现
[Person run];
[Person stop];
Method m1 = class_getClassMethod([Person class], @selector(run));
Method m2 = class_getClassMethod([Person class], @selector(stop));
method_exchangeImplementations(m1, m2);
NSLog(@"-----------------");
[Person run];
[Person stop];
}
@end
总结:
1.在运行期,可以向类中新增和替换所对应的方法实现。
2.使用另一份实现来替换现有的方法实现,“方法调配”,常用于向原有实现中添加新功能。
3.一般情况,只有调试程序的时候才使用此方法。