关于Xcode提示CUICatalog: Invalid ass

2020-08-24  本文已影响0人  等一个最好的自己

Xcode 提示CUICatalog:Invalid asset name supplied:'' 是+[UIImage imageNamed:]调用的时候, name为@""导致的,而CUICatalog:Invalid asset name supplied:'(null)'是name为nil导致的。

解决思路:只要找到项目调用[UIImage imageNamed:]的地方进行修改就可以解决,在项目中一个一个找显然很浪费时间。

解决方案:一、breakpoint

1.首先要添加Symbolic Breakpoint ,选择Add Symbolic Breakpoint

2.在Symbol填入+[UIImage imageNamed:] ,Condition填入[(NSString *)$arg3 length] == 0

3.运行项目,当运行到调用imageName方法并且name.length == 0时,就会出现堆栈信息,然后根据堆栈信息就会查找到对应位置的参数是nil或者@"",然后做出相应改正就行。

二、单纯的想去掉这个日志可以用runtime解决,利用方法替换,做出相应的策略代码如下:

+(void)load{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        [NSObject zpDefenderSwizzlingClassMethod:@selector(imageNamed:)
                                                withMethod:@selector(zp_none_imageNamed:)
                                                 class:[UIImage class]];
    });
}

+(id)zp_none_imageNamed:(NSString *)name{
    if (name.length) {
        return [UIImage zp_none_imageNamed:name];
    }
    return nil;
}

其中zpDefenderSwizzlingClassMethod是自己封装的方法替换代码,可自行网上查找。

如有错误,请大家留言指正,谢谢

上一篇 下一篇

猜你喜欢

热点阅读