iOS 关于CUICatalog: Invalid asset name supplied:‘‘问题

前言

最近维护项目时发现控制台有许多的警告输出:

[framework] CUICatalog: Invalid asset name supplied: ''

一、第一种方法

1、添加断点截取图片为空

iOS 关于CUICatalog: Invalid asset name supplied:‘‘问题_第1张图片

2、添加参数
[UIImage imageNamed:]

[(NSString *)$arg3 length] == 0

iOS 关于CUICatalog: Invalid asset name supplied:‘‘问题_第2张图片

3、效果如下

iOS 关于CUICatalog: Invalid asset name supplied:‘‘问题_第3张图片
iOS 关于CUICatalog: Invalid asset name supplied:‘‘问题_第4张图片

二、第二种方法

1、创建UIImage的分类

iOS 关于CUICatalog: Invalid asset name supplied:‘‘问题_第5张图片

2、利用runtime交换方法,代码如下
#import "UIImage+NilImage.h"
#import 
#import 
@implementation UIImage (NilImage)

+(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 ([self nullToString:name]) {
        NSLog(@"打印无图片名称=============%@",name);
        return  nil;
    }
    
    UIImage *image = [self looha_none_imageNamed:name];
    if (image == nil) {
        NSLog(@"打印无图片名称=============%@",name);
        return  nil;
    }
    return [self looha_none_imageNamed:name];;
}

//判断字符串是否为空
+ (BOOL)nullToString:(id)string {
    if ([string isEqual:@"NULL"] || [string isKindOfClass:[NSNull class]] || [string isEqual:[NSNull null]] || [string isEqual:NULL] || [[string class] isSubclassOfClass:[NSNull class]] || string == nil || string == NULL || [string isKindOfClass:[NSNull class]] || [[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length]==0 || [string isEqualToString:@""] || [string isEqualToString:@"(null)"]) {
        return YES;
    } else {
        return NO;
    }
}
@end
3、打断点调试,如果图片为nil如下

iOS 关于CUICatalog: Invalid asset name supplied:‘‘问题_第6张图片

4、如果项目中有用到imageNamed,但是不存在图片资源,那么就会下个断点调试出来,如下所示:iOS 关于CUICatalog: Invalid asset name supplied:‘‘问题_第7张图片

三、写在最后

1、用第二种方法就可以查找出是否引用nil的图片和使用了图片名,但是没有图片资源的地方。
2、如果你想删除项目中没有用到的图片资源,可以看另一篇文章iOS项目清除图片之LSUnusedResources的使用
END.

你可能感兴趣的:(Swift,iOS基础,ios,css3,前端)