黑魔法-运行时交换方法

参考网址:https://github.com/lizelu/ObjCRuntimeDemo


//这个方法可以检测图片名称是否为空,如果是空会打印

#import "UIImage+image.h"

#import

@implementation UIImage (image)

+(void)load

{

Method imageNamemethod= class_getClassMethod([UIImage class], @selector(imageNamed:));//这个是系统自身的方法


Method imagezjqMethod= class_getClassMethod([UIImage class], @selector(zjq_imageName:));//自己定义的方法

method_exchangeImplementations(imageNamemethod, imagezjqMethod);//两个方法进行交换,当调用第一个方法时会执行第二个方法的内容

}

+(__kindof UIImage*)zjq_imageName:(NSString *)imageName

{

//    加载图片,方法已交换,相当于调用了系统的imageNamed方法,不会死循环

UIImage *image=[UIImage zjq_imageName:imageName];

if (image==nil) {

NSLog(@"图片为空");

}

return image;

}

你可能感兴趣的:(黑魔法-运行时交换方法)