今天遇到一個很頑固的bug牵啦,解決之前都覺得很難渐裸,但是搞定之后,才恍然大悟犀被,原來如此簡單,
今天的問題是:日志里只顯示libc++abi.dylib: terminating with uncaught exception of type NSException這個外冀,其他信息一點都沒有寡键,然后各種調(diào)試,也就多了這么一條WebThread : signal SIGABRT雪隧,我完全懵了西轩,一點都不知道是什么問題,
問題背景:app里有一個活動頁面是h5的頁面脑沿,然后通過點擊h5頁面里的注冊和登錄按鈕藕畔,讓頁面跳到原生的app的登陸和注冊頁面進行下面的操作,因為此前做過其他的類似的功能的都沒問題捅伤,很自然的覺得肯定也是沒問題的劫流,結(jié)果就給我報了錯誤巫玻,錯誤停留在用戶名的那個textField那里丛忆,我奇怪的很,從app原生頁面進入注冊和登錄頁面沒一點問題仍秤,但是從h5頁面進入的話就會報錯熄诡,我就奇了怪了不清楚為什么會這樣,并且錯誤提示就是上面那兩個诗力,沒有任何的多余信息凰浮,
解決辦法:我各種百度看到好多人都是說 什么 xib 連線不對 ?,對象重復釋放等等這些解決方法苇本,我就奇了怪了 我是純代碼寫的完全沒有xib根本不會存在連線的問題袜茧,對象也沒有重復釋放,我完全搞不懂狀況瓣窄,各種博客都看過就是沒辦法笛厦,最后突然想到一個辦法 不知道行不行 只能試一試了,就自己寫了try?catch方法搞俺夕,方法如下:
?
@try{??
? ?? ?
? ? ? ? ? //這里寫你的造成app閃退的代碼
?
????} ?
?@catch
(NSException?*exception)?{??
????????NSLog(@"exception:%@"
,?exception);??
????} ?
?@finally?{ ?
??????????
????} ?
?
??然后再次運行程序到了這里依然會崩潰裳凸,點擊跳過斷點(有時候可能要多點幾次)贱鄙,然后就會發(fā)現(xiàn)日志欄里出現(xiàn)了新的關(guān)鍵的日志如下:
-[RegistViewController phoneField] [第139行] exception:Only run on the main thread!
一看就明白了,意思是要在主線程里執(zhí)行(這才是關(guān)鍵日志)姨谷,后來經(jīng)過修改就可以搞定了逗宁,
最后我?想了想 原因應(yīng)該是 ?UITextField 這種UI控件必須要在主線程里刷新的,而我從h5跳到原生頁面是開了子線程去跑的梦湘,所以有問題瞎颗,改完之后就沒問題了,希望能幫到一些和我犯一樣錯誤的同學吧捌议,畢竟 這種問題不容易搞言缤,錯誤日志信息很少,沒有重要信息禁灼,很麻煩管挟,,弄捕,