我们要修改[UIImage imageNamed:@"123"]; 没有该图片时报异常
@property (nonatomic, readonly, copy) NSArray<__kindof UIView *> *subviews;
UIImage+Image.h
+ (__kindof UIImage *)zdc_imageNamed:(NSString *)imageName;
+ (UIImage *)zdc_imageNamed:(NSString *)imageName
{
// 1.加载图片
UIImage *image = [UIImage zdc_imageNamed:imageName];
/* 这一定要注意 防止死循环 */
/* 这一定要注意 防止死循环 */
/* 这一定要注意 防止死循环 */
// 2.判断功能
if (image == nil) {
NSLog(@"加载image为空");
}
return image;
}
+ (void)load
{
// 交换方法实现,方法都是定义在类里面
// class_getMethodImplementation:获取方法实现
// class_getInstanceMethod:获取对象
// class_getClassMethod:获取类方法
// IMP:方法实现
// imageNamed
// Class:获取哪个类方法
// SEL:获取方法编号,根据SEL就能去对应的类找方法
Method imageNameMethod = class_getClassMethod([UIImage class], @selector(imageNamed:));
// xmg_imageNamed
Method zdc_imageNamedMethod = class_getClassMethod([UIImage class], @selector(zdc_imageNamed:));
// 交换方法实现
method_exchangeImplementations(imageNameMethod, zdc_imageNamedMethod);
}