交换方法

原创 2016年05月30日 18:25:24
#import "UIImage+AddImageFunc.h"
#import <objc/runtime.h>

@implementation UIImage (AddImageFunc)

+ (void)load {

    Method methodOfOrigin = class_getClassMethod(self, @selector(imageNamed:));
    Method methodOfCurrent= class_getClassMethod(self, @selector(custom_imageNamed:));
    //交换两个方法
    method_exchangeImplementations(methodOfOrigin, methodOfCurrent);

}


/*
 * 外界主动调用 imageNamed: 的时候,相当于调用了custom_imageNamed:这个方法
 *
 **/
+ (UIImage *)custom_imageNamed:(NSString *)name {

    if (name.length == 0) {

        name = @"1";
    }

    /*
     *  1.当 主动调用 [self custom_imageNamed:name]
        2.因为已经交换了 所以相当于调用[self imageNamed:name];
     **/
    UIImage * image = [self custom_imageNamed:name];
    return image;

    return nil;
}

@end
版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS运行时的用途一 -- 交换方法

前言运行时的的交换方法也叫黑魔法,在许多的第三方框架都使用了,例如AFN等步骤一、获得两个需要交换的方法Method aMethod = class_getClassMethod(self, aSel...
  • Bloody_Leaves
  • Bloody_Leaves
  • 2016年09月27日 10:19
  • 998

Runtime的实践——方法交换

读过《Runtime的初步认识——结构体与类》的小伙伴们应该对objc_class结构体的构造有所了解了struct objc_class { Class isa OBJC_ISA_AVAI...
  • RuiWang321
  • RuiWang321
  • 2016年05月12日 13:05
  • 2711

ios 利用runtime 机制 交换系统内部方法的实现

//获取类 方法     Method method =class_getInstanceMethod([UIView class], @selector(initWithFrame:)); ...
  • zuojinmin
  • zuojinmin
  • 2015年12月23日 10:37
  • 1572

runtime 几个要点总结-方法交换

函数替换 runtime forwardingTargetForSelector 消息转发 selector class_copyPropertyList property_getName resol...
  • sun2728
  • sun2728
  • 2016年08月08日 10:45
  • 784

Swift 中使用runtime交换方法实现

在swift的ViewController中写了如下代码:   func first () {         print("第一个方法")   }     func second () {     ...
  • jinzhongjunqianyan
  • jinzhongjunqianyan
  • 2016年08月13日 16:32
  • 1356

iOS runtime Method Swizzling(方法交换)的应用场景实例

iOS中有各类容器的概念,容器分可变容器和非可变容器,可变容器一般内部在实现上是一个链表,在进行各类(insert 、remove、 delete、 update )难免有空操作、指针越界的问题。 ...
  • huxinguang_ios
  • huxinguang_ios
  • 2017年04月07日 16:24
  • 683

OC运行时简单运用--3.1 动态交换方法实现

在项目开发过程中,总是能遇到一些重复代码,却不得不一遍遍重写,有些还特别容易产生变动,然后你又不得不一个个找到它们,并手动一个个去修改,很容易会出现遗漏或者手残改错的情况。或许使用继承在基类中书写共同...
  • WangErice
  • WangErice
  • 2016年04月21日 17:49
  • 326

Objective-C runtime黑魔法,交换iOS系统类库方法

Method Swizzle黑魔法,修改 ios 系统类库方法
  • glt_code
  • glt_code
  • 2016年09月07日 10:06
  • 6140

java交换两个数的常见方法及效率测试

论两个数的交换的重要性 讨论交换两个数的方法对某些人来说无聊,但某些人很乐意探究,甚至某些面试官喜欢用这个做文章。刚出来找工作笔试的时候我也碰到与之相关的问题。 常见的两个数交换的方法 边...
  • qq525099302
  • qq525099302
  • 2015年08月05日 11:31
  • 1429

交换数值的几种方法比较(a,b互换)

一.   temp=a;   a=b;   b=temp;   缺点:需要用temp中间量,空间性不好       二.加减法,另有乘除法,相似,就不另举了(+改为*,-改为/...
  • terrychinaz
  • terrychinaz
  • 2012年11月25日 10:44
  • 3168
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:交换方法
举报原因:
原因补充:

(最多只允许输入30个字)