关闭

交换方法

191人阅读 评论(0) 收藏 举报
分类:
#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
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:18886次
    • 积分:842
    • 等级:
    • 排名:千里之外
    • 原创:66篇
    • 转载:14篇
    • 译文:1篇
    • 评论:2条
    最新评论