开发使用场景:系统自带的方法功能不够,给系统自带的方法扩展一些功能,并且保持原有的功能。
方式一:继承系统的类,重写方法.
方式二:使用runtime,交换方法.
需求:给imageNamed方法提供功能,每次加载图片就判断下图片是否加载成功。
步骤一:先搞个分类,定义一个能加载图片并且能打印的方法
+ (instancetype)imageWithName:(NSString *)name;
步骤二:交换imageNamed和imageWithName的实现,就能调用imageName,间接调用imageWithName的实现。
核心方法class_getClassMethod,method_exchangeImplementations。
如果交换的是实例方法,用class_getInstanceMethod。
网友评论