崩溃 [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

崩溃 [XXXX respondsToSelector:]: message sent to deallocated instance 0x7fe2d3e404f0_第1张图片
image

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

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

崩溃 [XXXX respondsToSelector:]: message sent to deallocated instance 0x7fe2d3e404f0_第2张图片
image
崩溃 [XXXX respondsToSelector:]: message sent to deallocated instance 0x7fe2d3e404f0_第3张图片
image
崩溃 [XXXX respondsToSelector:]: message sent to deallocated instance 0x7fe2d3e404f0_第4张图片
image

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

你可能感兴趣的:(崩溃 [XXXX respondsToSelector:]: message sent to deallocated instance 0x7fe2d3e404f0)