首页 > 代码库 > iOS runtime exchange methods

iOS runtime exchange methods

void bd_exchangeInstanceMethod(Class aClass, SEL oldSEL, SEL newSEL);
void bd_exchageClassMethod(Class aClass, SEL oldSEL, SEL newSEL);

 

 

 

#import <objc/runtime.h>

void bd_exchangeInstanceMethod(Class aClass, SEL oldSEL, SEL newSEL)
{
    Method oldMethod = class_getInstanceMethod(aClass, oldSEL);
    assert(oldMethod);
    Method newMethod = class_getInstanceMethod(aClass, newSEL);
    assert(newMethod);
    method_exchangeImplementations(oldMethod, newMethod);
}

void bd_exchageClassMethod(Class aClass, SEL oldSEL, SEL newSEL)
{
    Method oldClsMethod = class_getClassMethod(aClass, oldSEL);
    assert(oldClsMethod);
    Method newClsMethod = class_getClassMethod(aClass, newSEL);
    assert(newClsMethod);
    method_exchangeImplementations(oldClsMethod, newClsMethod);
}

 

iOS runtime exchange methods