标签:
1. 实现IOS中的Swizzle效果:拦截系统方法
* 具体实现:给Image添加分类UIImage (Extension)
* 目的:通过拦截该imageNamed方法,可以一次性给项目中匹配各种屏幕存储的图片
@implementation UIImage (Extension)
/**
* 当某个类或者分类加载进内存时,会调用1次
*/
+ (void)load
{
Method m1 = class_getClassMethod([UIImage class], @selector(imageNamed:));
Method m2 = class_getClassMethod([UIImage class], @selector(test_imageNamed:));
method_exchangeImplementations(m1, m2);
}
+ (UIImage *)test_imageNamed:(NSString *)name
{
double version = [[UIDevice currentDevice].systemVersion doubleValue];
// iso8系统的全部匹配_os8后缀的图片
if (version >= 8.0) { // 如果
name = [name stringByAppendingString:@"_os8"];
}
return [UIImage test_imageNamed:name];
}
2.在控制器中
- (void)viewDidLoad {
[super viewDidLoad];
self.imageView.image = [UIImage imageNamed:@"test"];
self.imageView2.image = [UIImage imageNamed:@"test_os8"];
}
初学runtime--实现篇01(Method Swizzle)
标签:
原文地址:http://www.cnblogs.com/guozhong/p/4566488.html