今天被一個(gè)巨巨巨低級(jí)的bug搞了一天,最后發(fā)現(xiàn)原因有點(diǎn)想撞墻!
bug情景:針對(duì)所開(kāi)發(fā)的界面,真機(jī)調(diào)試沒(méi)問(wèn)題,當(dāng)打Release包給測(cè)試測(cè)的時(shí)候已進(jìn)入到該頁(yè)面就Crash了。。。
由于沒(méi)遇到過(guò)這種情況,一頭霧水不知道怎么用Xcode定位崩潰的代碼,但是做了如下嘗試:
1)用Xcode查看真機(jī)的Crash日志,但并沒(méi)有找出奔潰文件位置,但看到有一些友盟的類UmengSignalHandler 我們App里集成有友盟,友盟也統(tǒng)計(jì)崩潰,但并沒(méi)有用。。。
2)在崩潰統(tǒng)計(jì)Crashlytics 中找到對(duì)應(yīng)的編譯版本發(fā)現(xiàn)了崩潰的類文件??! 但是我希望是能知道具體的崩潰代碼
知道崩潰文件后,多次對(duì)可能出現(xiàn)Crash的地方進(jìn)行修改(說(shuō)實(shí)在我看了N遍原代碼, 都不覺(jué)得不應(yīng)該會(huì)崩潰),打包測(cè)試,看清楚!我多次打包測(cè)試!打包的過(guò)程是漫長(zhǎng)的。。。我現(xiàn)在才想起當(dāng)時(shí)的我是多么的蠢,哈哈哈,下面??重點(diǎn)來(lái)啦
解決辦法:
在程序調(diào)試的過(guò)程中, Xcode 默認(rèn)的情況是 Debug ,修改成 Release 情景下測(cè)試.
Edit Scheme ---> info --->Build Configuration 選擇 Release 進(jìn)行測(cè)試;
最后直接定位到了Crash的代碼上!仔細(xì)一看,瘋了,我把UIColor 對(duì)象定義成了assign ?。?!
建議 : 在程序開(kāi)發(fā)完成以后,建議在測(cè)試的時(shí)候 把 Debug 和 Release 兩個(gè)版本都測(cè)試一下, 再打包。在提測(cè)的時(shí)候以 Release 測(cè)試的情況為準(zhǔn). 因?yàn)?Release 狀態(tài)下測(cè)試的情況,是用戶使用的真是情景.