#定义分类 #import "UIImage+XL.h" #import <objc/runtime.h>
@implementation UIImage (XL)
-
(void)initialize { // NSLog(@"initialize");
//加农户按两个方法的实现只需要线面三句代码即可完成(注意下面的方法是类方法的的交换,也可以哟哟对象方法的交换 例如--------------------- { //__NSArrayM class] Method m1 = class_getInstanceMethod(NSClassFromString(@"__NSArrayM"), @selector(addObject:)); Method m2 = class_getInstanceMethod(NSClassFromString(@"__NSArrayM"), @selector(cz_addobjc:)); method_exchangeImplementations(m1, m2); } })
Method m1 = class_getClassMethod([UIImage class], @selector(imageNamed:));
Method m2 = class_getClassMethod([UIImage class], @selector(imageWithName:));
method_exchangeImplementations(m1, m2);
}
//编译
-
(void)load { //NSLog(@"load"); }
-
(UIImage *)imageWithName:(NSString *)imageName {
NSLog(@"imageWithName");
NSString *str = imageName;
if ([[UIDevice currentDevice].systemVersion floatValue] < 7.0) { str = [NSString stringWithFormat:@"%@_os7",str]; }else{ str = imageName; }
UIImage *image = [UIImage imageWithName:str];
if (image == nil) { image = [UIImage imageWithName:imageName]; }
return image;
} @end #分类的实现在
- (void)viewDidLoad { [super viewDidLoad];
//此时下面这个方法的实现就是执行的我们自定义的imageWithName:的方法
self.imageview.image = [UIImage imageNamed:@"image"];
}