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);
}

 

posted @ 2017-08-03 11:46  Qiang zi  阅读(340)  评论(0编辑  收藏  举报