对于一个老旧项目,经过不知道几个前任的项目,Xcode log很大几率会有大量错误CUICatalog:Invalid asset name supplied:
出现这个问题的原因是[UIImage imageNamed:]方法, name为nil,就着手解决这个问题。
方法一(强烈不推荐),Xcode下符号断点imageNamed ,找到name为nil的地方出手动处理,体力活儿,头大,不过实在闲的没事干,可以用这个方法消磨一下时光
方法二:(强烈推荐)
利用Method Swizzle,替换imageNamed方法,一劳永逸,用时2分钟,直接上代码
#import "UIImage+None.h"
#import <objc/runtime.h>
@implementation UIImage (None)
+(void)load{
Method imageNamed = class_getClassMethod(self,@selector(imageNamed:));
Method looha_ImageNamed =class_getClassMethod(self,@selector(looha_none_imageNamed:));
method_exchangeImplementations(imageNamed, looha_ImageNamed);
}
+(instancetype)looha_none_imageNamed:(NSString*)name{
if ([JudgeNullObject isExistWithString:name]) {//判断是否为空的方法,不提供,自行搞定
return [self looha_none_imageNamed:name];
}else{
return nil;
}
}
@end
然后把.h文件丢到pch文件中,搞定!