【iOS】一次切換tabbar卡頓問(wèn)題的排查過(guò)程

問(wèn)題

在某個(gè)版本后,當(dāng)點(diǎn)擊底部tababr切換頁(yè)面的時(shí)候,從點(diǎn)擊到切換成功會(huì)有一定的時(shí)間延遲,這個(gè)時(shí)間不是很長(zhǎng),但是,就是可以明確的感覺到一個(gè)卡頓。

  • Time Profiler

首先想到的就是使用instruments里面的Time Profiler。分別在simulator和真機(jī)上測(cè)試,獲取到tababr切換期間的CPU使用時(shí)間,發(fā)現(xiàn)一切正常,沒有特別耗時(shí)的操作。

  • 排查tabbar的問(wèn)題

應(yīng)用使用的不是系統(tǒng)自帶的tababr,所以懷疑是tabbar的問(wèn)題。那么,替換自定義的tabbar 為原生,發(fā)現(xiàn)問(wèn)題還是存在。

  • 排查viewController的問(wèn)題

tabbar有五個(gè)viewController,想到可能是某個(gè)viewController里面做了什么操作,導(dǎo)致切換的時(shí)候卡頓。直接把第一個(gè)viewController替換掉,然后運(yùn)行,發(fā)現(xiàn)卡頓消失。那就證明是這個(gè)viewController導(dǎo)致的問(wèn)題,然后找到所屬模塊,定位具體問(wèn)題。

  • 排查具體修改

因?yàn)槊看未虬?,我們都?huì)保存那個(gè)版本對(duì)應(yīng)的podfile.lock 文件。所以,排查方法就是找到版本的lock文件,然后在里面找到對(duì)應(yīng)的模塊的commiid,通過(guò)回溯代碼到對(duì)應(yīng)的commitid,然后找問(wèn)題。

  • 結(jié)果

排查結(jié)果就是,有代碼在tabbar上面加了一個(gè)雙擊手勢(shì)。所以當(dāng)點(diǎn)擊事件發(fā)生的時(shí)候,由于有雙擊手勢(shì)的存在,所以系統(tǒng)會(huì)延遲一定時(shí)間,然后才會(huì)調(diào)用單擊事件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容