前言
在日常摸魚中接到一個老項目需要維護赫模,發(fā)現(xiàn)一個需要訪問相冊的地方會發(fā)生閃退屁使,項目用到了第三方TZImagePickerController,這是一個訪問相冊的第三方砂豌,而就在TZImagePickerController里出現(xiàn)了閃退的bug先嬉,bug位置在訪問到相冊后點擊返回箭頭退出訪問會崩潰轧苫,嘗試打斷點拿到具體崩潰位置和原因,然而奇怪的是,一切非常順利含懊,并沒有出現(xiàn)崩潰現(xiàn)象身冬。我停止運行項目,手動啟動APP岔乔,點擊返回卻發(fā)現(xiàn)會崩潰酥筝,這樣我就無法確定具體崩潰原因,不能通過報錯找答案雏门,只能通過描述現(xiàn)象在網絡世界里探尋解決方案嘿歌,然而沒找到與TZImagePickerController有關的崩潰問題,就在我失望的時候茁影,它出現(xiàn)在我的眼里宙帝,沒錯!就是WRNavgationBar募闲。
WRNavgationBar
WRNavgationBar是一個自定義導航欄功能的第三方步脓,它出現(xiàn)在我眼里就是因為項目里也集成了WRNavgationBar,WRNavgationBar的使用貫通項目里里外外蝇更,發(fā)現(xiàn)“嫌疑人”沪编,我就在網絡世界里找解決方案,最后在WRNavgationBar的GitHub里找到答案年扩,一切都是WRNavgationBar的問題,會和其他三方產生沖突的原因在于點擊返回是在子線程調用的访圃,形成堵塞崩潰厨幻,解決方案是回到主線程調用。
解決方案
在WRNavigationBar.m中找到
- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item
在方法里面找到
[selfpopToViewController:popToVC animated:YES];
將其替換成
dispatch_async(dispatch_get_main_queue(), ^{
????[selfpopToViewController:popToVC animated:YES];
});
到此腿时,解決
啊...?又可以繼續(xù)摸魚啦...