iOS开发——Debug CUICatalog: Invalid asset name supplied: (null)

今天看到了一个Xcode log出了一个错误 CUICatalog:Invalid asset name supplied: (null), Google了一下在StackOverflow上各位大神说应该是[UIImage imageNamed:]调用的时候, name为nil. 虽然在运行的时候界面一切正常, 但是看到这个log还是想干掉它,或许每个程序猿都是一个重度强迫症患者。

需要解决的问题是查找所有[UIImage imageNamed:]调用的时候, 找到name是nil的地方, 但是整个项目一搜 imageNamed 显示 267 results in 117 files, 人工查找就算了吧.

一开始想到的是用Method Swizzle来修改[UIImage imageNamed:]的实现, 在name为nil的时候用断言, 查看调用栈. 但是想想写了debug之后还得删掉, 比较麻烦.

于是机智的我想到了用Symbolic Breakpoint.

  • 在Xcode的Breakpoint Navigator点击加号, 选择Add Symbolic Breakpoint.
  • 右键选择Breakpoint选择 Edit Breakpoint , 在Symbol填入[UIImage imageNamed:] , 在Condition填入 [(NSString *)$arg3 length] == 0或者$arg3 == nil. 可以自己尝试po $arg1, po $arg2试试看.
  • 运行程序, 直到程序进入断点. 打开Debug Navigator观察调用栈, 最顶部的一定是[UIImage imageNamed:], 点击调用栈下一条, 能够看到有调用到imageNamed的代码, 就是namenil的地方.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏NetCore

[原创]Fluent NHibernate之旅(四)-- 关系(上)

经过了前面三篇的介绍,相信大家对Fluent NHibernate已经有一定的了解了,在我们学习中,Fluent 也已经进入了RTM版本。这次的版本发布离RC版...

22660
来自专栏葡萄城控件技术团队

ASP.NET AJAX UpdatePanel 控件实现剖析

使用ASP.NET AJAX框架我们可以搭建快速响应、具有丰富的用户体验的AJAX Web应用程序,而该框架的UpdatePanel控件则提供了一种非常简单的方...

424100
来自专栏程序员互动联盟

Windows SDK编程基本框架

在Windows平台下,最常见最流行的编程就是MFC编程了,在网上可以搜索出大把的MFC编程相关的文章,今天我们来讨论另外一种windows下的编程模式,即W...

338130
来自专栏张善友的专栏

SignalR QuickStart

SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地...

23560
来自专栏向治洪

iOS Hybrid 框架

前言 Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”...

51380
来自专栏武军超python专栏

2018年8月18日初识tkinter

把C盘里面的东西移动到其他盘对文件有影响吗?普通文件如音频视频没有影响,但是如果是软件的话 下载的时候会在注册表中记录打开文件的路径,如果移动到其他盘的话注册...

12820
来自专栏张善友的专栏

依赖注入容器Autofac

在.NET上现在存在许多的依赖注入容器, 我也在实践中使用过Castle Windsor、StructureMap、Autofac 、Unity。这些容器的简要...

27890
来自专栏本立2道生

Win32对话框程序(1)

之前学C语言是一直都是在控制台下面操作的,面对的都是黑框框,严重的打击了学习的兴趣。后来在TC下进行C语言课程设计,做了图形界面编程,但都是点线面画的…… 

20010
来自专栏王大锤

再谈RunLoop

14030
来自专栏逍遥剑客的游戏开发

Nebula3 in CLR

14130

扫码关注云+社区

领取腾讯云代金券