UITableView之separatorStyle在iOS8上閃退問(wèn)題解決(隨筆)

? ? ? ? 上個(gè)月,公司新上線(xiàn)的APP捕捉到閃退問(wèn)題,而且頻率還挺高的,由于是一款供給自己公司內(nèi)部使用的APP,業(yè)務(wù)部門(mén)的同事反應(yīng)比較強(qiáng)烈,最終找到的解決問(wèn)題的方法很簡(jiǎn)單,但是真正值得一說(shuō)的,是尋找問(wèn)題的過(guò)程。

? ? ? ? 由于沒(méi)有iOS8的測(cè)試手機(jī),只能在xcode中下載的iOS8.1的模擬器,下圖是模擬器運(yùn)行后控制臺(tái)中展示的閃退錯(cuò)誤信息:

UITableview報(bào)錯(cuò)

? ? ? ? 從圖上的截圖,我的第一反應(yīng)是,那個(gè)cell沒(méi)有定義好,導(dǎo)致了閃退,此后,我對(duì)相關(guān)的額控制器進(jìn)行了仔細(xì)的排查,但是排查完發(fā)現(xiàn),并沒(méi)有哪個(gè)cell沒(méi)有按步驟處理。此時(shí)想到,可以通過(guò)斷點(diǎn)的形式,找到出問(wèn)題的位置。。。。真是浪費(fèi)了不少時(shí)間。


添加斷點(diǎn)的位置


添加的斷點(diǎn)

在以上步驟完成之后,運(yùn)行APP,效果如下圖:


代碼閃退的位置

此時(shí),更是一頭霧水,這句每天都會(huì)寫(xiě)的代碼,怎么會(huì)有問(wèn)題。。。。

更神奇的是,注釋掉這句話(huà)之后,竟然可以完美運(yùn)行。。。。。。。傻眼

于是,開(kāi)始瘋狂百度。。。。這個(gè)不是。。。這個(gè)。。。不是。。。。這個(gè)。。。。不看了。。。百度的答案,貌似沒(méi)有第二個(gè)了。

此時(shí),想出的解決方案有兩個(gè):

第一:將cell重寫(xiě),不適用上面報(bào)錯(cuò)的代碼,但是內(nèi)心是多么的抗拒啊。。。這句代碼憑什么不能寫(xiě);

于是選擇第二方案:找到閃退原因。

于是有了這段定義tableView的代碼:


世上最簡(jiǎn)單的定義tableview方法

運(yùn)行。。。正常。。。

注釋掉一行之后運(yùn)行

注釋一行

運(yùn)行。。。。竟然是OK的。。。。瞎了

難道是tableFooterView造成的閃退?還是因?yàn)槲覜](méi)有設(shè)置frame造成的?

于是又嘗試了下面的情況:

第n個(gè)嘗試

還是閃退。。。

******于是,突然想到難道是初始化的順序?qū)е碌膯?wèn)題?

最終解決辦法

交換了兩個(gè)設(shè)置的順序,運(yùn)行。。。。。完美了。。。

最終找到問(wèn)題的解決方案盡然是separatorStyle的設(shè)置必須在tableFooterView、tableHeaderView之前。

當(dāng)然,這個(gè)問(wèn)題也只在iOS8上才會(huì)出現(xiàn),但是目前iOS8的市場(chǎng)保有量還是挺大的,應(yīng)該注意這個(gè)問(wèn)題。至于為什么會(huì)出現(xiàn)這個(gè)問(wèn)題,或者是iOS底層出現(xiàn)的什么問(wèn)題,暫未進(jìn)行過(guò)多的研究,歡迎指導(dǎo)的同學(xué)留言交流。

以上,只是個(gè)人對(duì)于遇到的這個(gè)問(wèn)題以及解決過(guò)程的簡(jiǎn)單記錄,希望能夠幫到遇到同樣問(wèn)題的同行們。

第一次發(fā),不喜勿怪,手下留情,謝謝!


-------------------更新 20171015----------------

二樓的小伙伴提供了新的解決辦法

“把separator放在cell的注冊(cè)之后,不管separator和tableFooterView的先后順序,就能順利執(zhí)行”

這個(gè)方案嘗試之后也是可以避免閃退發(fā)生的,但是原本提供的方法在哪個(gè)版本上仍然閃退還需要再次驗(yàn)證,尚未發(fā)現(xiàn)

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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