美文网首页
iOS:runtime实现方法交换

iOS:runtime实现方法交换

作者: 不简单的风度 | 来源:发表于2016-06-06 20:20 被阅读122次

新建一个类别,导入#import <objc/runtime.h>
+ (void)load方法中写代码

+ (void)load
{
    
    SEL orignsel  = @selector(setBackgroundColor:);
    SEL exchgesel = @selector(ly_setBackGroundColor:);
    
    
    Method originalM  = class_getInstanceMethod([self class], orignsel);
    Method exchangeM  = class_getInstanceMethod([self class], exchgesel);
    
    BOOL didAddMethod = class_addMethod([self class], orignsel, method_getImplementation(exchangeM), method_getTypeEncoding(exchangeM));
    if (didAddMethod)
    {
        class_replaceMethod([self class], exchgesel, method_getImplementation(originalM), method_getTypeEncoding(originalM));
    }
    else
    {
        method_exchangeImplementations(originalM, exchangeM);
    }
    
}

- (void)ly_setBackGroundColor:(UIColor *)color
{
    [self ly_setBackGroundColor:[UIColor cyanColor]];
}

至于具体原理可去搜索runtime机制

相关文章

  • iOS 按钮防止多次快速点击

    iOS 按钮防止多次快速点击,利用runtime交换方法,实现时间控制。

  • iOS 按钮防止多次快速点击

    使用runtime iOS 按钮防止多次快速点击,利用runtime交换方法,实现时间控制。 #import NS...

  • iOS:runtime实现方法交换

    新建一个类别,导入#import 在+ (void)load方法中写代码 至于具体...

  • RunTime实现

    1:RunTiem交换方法实现 //runTime交换方法实现 // 1,创建已有类的分类,并且实现自己的方...

  • Runtime

    runtime运行时机制1:通过runtime,实现方法交换(交换两个类方法、交换两个实例方法)2:通过runti...

  • iOS - RunTime(Swift)

    RunTime实现存储属性(本质也是一个计算属性) RunTime实现方法交换

  • iOS runtime如何交换两个类方法

    如有转载,请标明出处:iOS runtime如何交换两个类方法 runtime交换实例方法,老生常谈的问题,很多b...

  • Day3

    1 runtime运行时机制1:通过runtime,实现方法交换(交换两个类方法、交换两个实例方法)。2:通过ru...

  • 参考YYImage,让页面自动支持gif、webp等格式图片

    参考: iOS Runtime交换对象方法和类方法探讨 YYImage SDWebImage ----软件--- ...

  • ios-Runtime(运行时)

    利用runtime来实现归档解档 方法交换 俗称 OC的方法欺骗 KVO的实现原理 用runtime来实现KVO...

网友评论

      本文标题:iOS:runtime实现方法交换

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