RunTime交换两个方法,可以根据特定条件来改变.

一.机制:这里用的是RunTime的消息机制

二.需求:需求是对iOS8 - 和 iOS8 + 的图片进行适配,根据不同的系统版本展示不同的图片,并且在加载图片的时候做个图片是否加载成功的判断.

三.实现:

   1.分析:如果要实现对图片的操作,那么就需要给UIImage做一个分类

   2.通过调用#import <objc/message.h> 获取到两个方法,然后交换两个方法的地址,实际上就是交换两个反法国的实现方式.

   3.在分类文件中实现自定义的方法,供外部调用.

   4.添加两个图,一个名字为old,一个名字为old_iOS8+,最好两张图不一样,这样能够很多的区分效果

四.代码:创建一个名字为MyImage的分类文件,自定义一个方法名.

MyImage.h:

   

MyImage.m:

这里load 方法是UIImage 的系统方法,这里通过获取地址方法,然后交换地址,这样外部调用自己定义方法时,其实调用的是自己定义的imageWithName方法.

掉用:

原文地址:https://www.cnblogs.com/zhouyantongiOSDev/p/5258598.html