1. 程式人生 > >iOS runtime exchange methods

iOS runtime exchange methods

color blog assert obj ins cls ati ldm imp

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