美文网首页
RUNTIME替换类方法

RUNTIME替换类方法

作者: zttjhm | 来源:发表于2018-06-26 14:42 被阅读0次

/*

memberMethod:是否成员方法

*/

void swizzleMethod(Class class,SEL originalSelector,SEL swizzledSelector,BOOL memberMethod) {

    Method originalMethod ;

    Method swizzledMethod;

    if( memberMethod ) {

        originalMethod =class_getInstanceMethod(class, originalSelector);

        swizzledMethod =class_getInstanceMethod(class, swizzledSelector);

    }else{

        class =object_getClass(class);// <------修改

        originalMethod =class_getClassMethod(class, originalSelector);

        swizzledMethod =class_getClassMethod(class, swizzledSelector);

    }

    IMP swizzledImp =method_getImplementation(swizzledMethod);

    char* swizzledTypes = (char*)method_getTypeEncoding(swizzledMethod);

    IMP originalImp =method_getImplementation(originalMethod);

    char* originalTypes = (char*)method_getTypeEncoding(originalMethod);

    BOOL success =class_addMethod(class, originalSelector, swizzledImp, swizzledTypes);

    if(success) {

        class_replaceMethod(class, swizzledSelector, originalImp, originalTypes);

    }else{

        // 添加失败,表明已经有这个方法,直接交换

        method_exchangeImplementations(originalMethod, swizzledMethod);

    }

}

相关文章

  • RUNTIME替换类方法

    /* memberMethod:是否成员方法 */ void swizzleMethod(Class class,...

  • objc runtime 随笔

    #import 1. 替换类方法: + (void)load{ Class c...

  • runtime-Method Swizzling(方法调换)

    通过修改一个已存在类的方法, 来实现方法替换是比较常用的runtime技巧。 使所有的类都具有调换方法的功能: #...

  • runtime实用

    首先导入头文件 runtime替换方法的: 在类的+load方法中进行,因为这个东...

  • iOS常见崩溃解决方法

    iOS常见崩溃解决方法1、通过category给类添加方法用来替换掉原本存在潜在崩溃的方法。2、利用runtime...

  • 使用runtime替换类的方法

    使用runtime替换类的方法 一些系统类或者第三方库的类方法无法修改原文件中的方法,可以通过添加分类,metho...

  • iOS字体大小自动适配

    扩展UIfont,然后使用Runtime替换方法

  • runtime 在逆向中的使用

    在逆向工程中,利用runtime可以动态获取类和属性,绑定属性,替换方法的实现。 KVC 可以通过直接获取类的私有...

  • 各种Hook框架的理解

    非越狱环境: OC的runtime特性,来动态替换修改oc类的方法,但仅能针对OC语言 fishhook fac...

  • iOS 方法交换(methodSwizzling)

    iOS运行中runtime中采用消息分发机制,允许开发者对其进行方法交换,替换某个类的方法实现或者在执行方法前添加...

网友评论

      本文标题:RUNTIME替换类方法

      本文链接:https://www.haomeiwen.com/subject/rrfmyftx.html