崩溃 [XXXX respondsToSelector:]: message sent to deallocated instance 0x7fe2d3e404f0

模拟器运行时崩溃,并打印出错误信息

[XXXX respondsToSelector:]: message sent to deallocated instance 0x7fe2d3e404f0
image

如果没有打印出错误信息的话,而是堆栈信息,这时可以进行相关的设置。
1、Xcode-菜单栏-Product-Scheme-Edit scheme-Run Debug-Diagnostics
2、选择:Zombie Objects、Malloc Stack

image

遇到这种崩溃时,大概知道是向已经释放的对象发送消息。但具体的问题是在哪一段代码造成的,应该如何解决呢?
解决方法:使用命令malloc_history PID 崩溃地址查找崩溃发生的代码,再修改过来。

具体做法是:
1、Xcode错误信息已经告诉我们发生错误时的崩溃地址;
2、通过活动监视器查找当前模拟器运行的APP对应的进程ID,即PID;
3、通过终端命令malloc_history PID 崩溃地址查找崩溃代码;

image
image
image

注意:最后的代码就已经指出发生崩溃的代码。但是,需要不断进行深挖该代码执行时所涉及到的其他代码。
如:我在排查时,提示的是loadDataGoods:中的** setUI 方法出问题,实际上却是**setUI方法中调用了其他方法造成的,即挖了两层才找到根源。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容