iOS模拟器出现CUICatalog无效资源名错误,求调试方法
调试CUICatalog: Invalid asset name supplied: ''错误的方法
一、定位代码中UIImage(named:)的空值调用
- 全局搜索项目里的
UIImage(named:,逐一检查参数:有没有直接传""、nil,或者变量在特定视图加载时为空的情况(比如某个字符串变量未初始化就传入)。 - 用符号断点精准拦截:打开Xcode的断点导航栏(快捷键Cmd+8),点击左下角的
+号选择「Symbolic Breakpoint」,输入符号-[UIImage imageNamed:]。运行到触发错误的场景时,断点会自动命中,查看调用栈就能直接找到出问题的代码位置。
二、排查故事板/界面文件的配置问题
- 针对Tab Bar的情况:打开触发错误的特定视图所在的故事板,找到对应的Tab Bar Item,检查「Selected Image」和「Image」字段,有没有设置为空字符串,或者引用了Asset Catalog中不存在的资源名。
- 快速搜索界面文件的空资源:用文本编辑器直接打开
.storyboard或.xib文件,搜索image=""或selectedImage="",能快速定位到空值配置的位置。
三、进阶:用CUICatalog相关符号断点深挖
如果上面的方法没找到问题,直接针对CUICatalog的核心函数加断点:
- 新建符号断点,输入
CUICatalogCreateImageFromAssetWithName或者-[CUICatalog namedImageWithName:scale:idiom:subtype:sizeClass:sizeDirection:]。当错误触发时,断点会命中,通过调用栈回溯可以找到上层触发资源加载的源头,不管是代码还是界面配置。
内容的提问来源于stack exchange,提问作者es1
相关产品推荐
相关产品推荐

