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

iOS 关于CUICatalog: Invalid asset name supplied:‘‘问题,第1张

前言

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

[framework] CUICatalog: Invalid asset name supplied: ''
一、第一种方法 1、添加断点截取图片为空

2、添加参数
[UIImage imageNamed:]

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

3、效果如下


二、第二种方法 1、创建UIImage的分类

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如下

4、如果项目中有用到imageNamed,但是不存在图片资源,那么就会下个断点调试出来,如下所示: 三、写在最后 1、用第二种方法就可以查找出是否引用nil的图片和使用了图片名,但是没有图片资源的地方。 2、如果你想删除项目中没有用到的图片资源,可以看另一篇文章iOS项目清除图片之LSUnusedResources的使用 END.

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/996458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存