Runtime | 方法交换

准备工作/ 创建Person类并声明两个方法

- (void) fristMethod;
- (void) secondMethod;

方法简单实现

- (void) fristMethod {
    NSLog(@"fristMethod");
}
- (void) secondMethod {
    NSLog(@"secondMethod");
}

控制器调用

///  使用runtime来交换两个方法
- (void) rylsj_ExchangedMethod {
    /// 获取方法
    Method m1 = class_getInstanceMethod([self.persion class], @selector(fristMethod));
    Method m2 = class_getInstanceMethod([self.persion class], @selector(secondMethod));
    /// 交换
    method_exchangeImplementations(m1, m2);
}

注意

method_exchangeImplementations 交换SEL 和 IMP 的对应关系
SEL -- IMP(才是指针!)
class_getInstanceMethod : 获取实例方法
class_getClassMethod 获取类方法

你可能感兴趣的:(Runtime | 方法交换)