RunTime交换两个方法,可以根据特定条件来改变.
一.机制:这里用的是RunTime的消息机制
二.需求:需求是对iOS8 - 和 iOS8 + 的图片进行适配,根据不同的系统版本展示不同的图片,并且在加载图片的时候做个图片是否加载成功的判断.
三.实现:
1.分析:如果要实现对图片的操作,那么就需要给UIImage做一个分类
2.通过调用#import <objc/message.h> 获取到两个方法,然后交换两个方法的地址,实际上就是交换两个反法国的实现方式.
3.在分类文件中实现自定义的方法,供外部调用.
4.添加两个图,一个名字为old,一个名字为old_iOS8+,最好两张图不一样,这样能够很多的区分效果
四.代码:创建一个名字为MyImage的分类文件,自定义一个方法名.
MyImage.h:
MyImage.m:
这里load 方法是UIImage 的系统方法,这里通过获取地址方法,然后交换地址,这样外部调用自己定义方法时,其实调用的是自己定义的imageWithName方法.
掉用: