模擬器運(yùn)行時(shí)崩潰,并打印出錯(cuò)誤信息
[XXXX respondsToSelector:]: message sent to deallocated instance 0x7fe2d3e404f0
image
如果沒(méi)有打印出錯(cuò)誤信息的話,而是堆棧信息鸦做,這時(shí)可以進(jìn)行相關(guān)的設(shè)置。
1谓着、Xcode-菜單欄-Product-Scheme-Edit scheme-Run Debug-Diagnostics
2泼诱、選擇:Zombie Objects、Malloc Stack
image
遇到這種崩潰時(shí)赊锚,大概知道是向已經(jīng)釋放的對(duì)象發(fā)送消息治筒。但具體的問(wèn)題是在哪一段代碼造成的屉栓,應(yīng)該如何解決呢?
解決方法:使用命令malloc_history PID 崩潰地址查找崩潰發(fā)生的代碼耸袜,再修改過(guò)來(lái)系瓢。
具體做法是:
1、Xcode錯(cuò)誤信息已經(jīng)告訴我們發(fā)生錯(cuò)誤時(shí)的崩潰地址句灌;
2夷陋、通過(guò)活動(dòng)監(jiān)視器查找當(dāng)前模擬器運(yùn)行的APP對(duì)應(yīng)的進(jìn)程ID,即PID胰锌;
3骗绕、通過(guò)終端命令malloc_history PID 崩潰地址查找崩潰代碼;
image
image
image
注意:最后的代碼就已經(jīng)指出發(fā)生崩潰的代碼资昧。但是酬土,需要不斷進(jìn)行深挖該代碼執(zhí)行時(shí)所涉及到的其他代碼。
如:我在排查時(shí)格带,提示的是loadDataGoods:中的** setUI 方法出問(wèn)題撤缴,實(shí)際上卻是**setUI方法中調(diào)用了其他方法造成的,即挖了兩層才找到根源叽唱。