在日常的項(xiàng)目開發(fā)中,難免遇到崩潰和異常,在這里我簡(jiǎn)單的說(shuō)一些自己處理的心得
1、當(dāng)測(cè)試、產(chǎn)品、用戶或者其他人告訴你程序哪里有問(wèn)題時(shí),我們不要輕易的否定說(shuō)這個(gè)肯定沒(méi)問(wèn)題或者是誰(shuí)的問(wèn)題(最多的是推給后臺(tái)或網(wǎng)絡(luò))。首先我覺(jué)得應(yīng)當(dāng)回答:“我知道了,我這邊看一下,定位一下問(wèn)題”,作為一個(gè)開發(fā)者,我們應(yīng)該有一個(gè)嚴(yán)謹(jǐn)?shù)膽B(tài)度,不能輕易的、草率的下結(jié)論,這很有可能會(huì)給別人一種不靠譜不負(fù)責(zé)任的印象。其次,我們應(yīng)當(dāng)仔細(xì)的分析定位問(wèn)題,經(jīng)過(guò)自己的分析以后再告訴他人到底是程序的問(wèn)題還是后臺(tái)或者其他的什么原因(其實(shí)大部分還是自己的程序的問(wèn)題),以及處理情況。
2、當(dāng)在程序中遇到崩潰或異常時(shí),我的一些處理方法
(1)靠直覺(jué)或者說(shuō)靠猜,當(dāng)然這個(gè)也不是瞎猜,是建立在你真正了解了代碼的邏輯在根據(jù)自己的經(jīng)驗(yàn)來(lái)判斷的。通過(guò)這種方法,你可以快速縮小問(wèn)題的范圍,然后斷點(diǎn)調(diào)試,就可以準(zhǔn)確快速的定位問(wèn)題。
(2)善于打斷點(diǎn),斷點(diǎn)調(diào)試應(yīng)該是程序員調(diào)試的基本功也是最有用的一個(gè),基本可以定位90%的問(wèn)題。多打斷點(diǎn),一步步的分析,輸出每個(gè)變量元素的值,相信你可以很準(zhǔn)確的找到問(wèn)題所在,不要怕麻煩。?
? ? 有時(shí)候模擬器調(diào)試,可能很難判斷是那里出了問(wèn)題,這個(gè)時(shí)候可以打全局?jǐn)帱c(diǎn)來(lái)捕獲出問(wèn)題的地方。
(3)學(xué)會(huì)看崩潰的堆棧
看崩潰的堆棧是一個(gè)很有用的定位崩潰的方法,因?yàn)橛袝r(shí)候xcode捕捉不到崩潰的斷點(diǎn),即使打了全局?jǐn)帱c(diǎn)。這個(gè)時(shí)候看崩潰的堆棧就顯得很有用,尤其崩潰是在使用一些第三方庫(kù)的時(shí)候,你可以清楚的看到崩潰是發(fā)生在哪一條線程,崩潰在哪個(gè)方法里面,以及崩潰前執(zhí)行的方法(有時(shí)候崩潰并不是最后一個(gè)方法造成的,可能是前面的方法穿了錯(cuò)誤的參數(shù)所造成的),這時(shí)候就可以聯(lián)系崩潰前后的方法來(lái)定位崩潰的原因
(4)在調(diào)試期間多打印NSLog,多輸出當(dāng)前的變量的值,也可以很快的找到問(wèn)題所在
關(guān)于內(nèi)存泄露,控制器釋放不及時(shí)等這些異常,網(wǎng)上已經(jīng)有很多相關(guān)的文章了,我就不獻(xiàn)丑了。以上就是我平時(shí)遇到崩潰或異常時(shí)處理的一些方法,希望對(duì)你有些幫助,如果有更多好的方法,請(qǐng)?jiān)谙旅媪粞裕蠹叶喽嘟涣鳎黄鹛岣?/p>