前言:從最開始到現(xiàn)在也遇到了不少Thread 1: EXC_BAD_ACCESS (code=1, address=)的崩潰情況,因為不好定位到具體的crash位置,所以調試起來比一般的crash情況要復雜一點来氧。因此澄港,打算留個接口,記錄下因為Thread 1: EXC_BAD_ACCESS 導致的崩潰(包括其他各種crash情況)垂蜗,方便自己編寫代碼時作參考喘先,也希望能幫到遇到相同問題的朋友钳吟。
為什么會報:Thread 1: EXC_BAD_ACCESS?
“Thread 1: EXC_BAD_ACCESS” 的出現(xiàn)一般都是因為內存泄漏的問題導致窘拯。
當需要給一個對象發(fā)送消息红且,但是該對象已經被提前釋放時,就可能會出現(xiàn)這種情況涤姊,但是編譯器往往會crash到其他位置暇番,讓人摸不到頭腦,這時候就需要根據代碼和具體的崩潰情景進行調試思喊。
我在含有tableView的界面執(zhí)行popToRootViewController方法壁酬,之后程序crash,在調試后提示
“numberOfSectionsInTableView:]: message sent to deallocated instance”
分析得出是執(zhí)行了tableView的代理方法恨课,并拋出異常舆乔。
解決方法:
在執(zhí)行popToRootViewController方法之前,將tableView的代理置空:
tableView.delegate = nil;
tableView.dataSource = nil;
[self.navigationController popToRootViewControllerAnimated:NO];
之后發(fā)現(xiàn)問題已被解決剂公。