前言
項(xiàng)目接近尾聲,昨天在測(cè)試的時(shí)候發(fā)現(xiàn)了一個(gè)閃退的問題抖格。測(cè)試的設(shè)備為iPhone5s,系統(tǒng)是iOS 8.3咕晋,其他的測(cè)試設(shè)備都不會(huì)崩潰雹拄。臨近下班,就沒有多想掌呜,感覺就是一個(gè)謎之bug滓玖,從Bugly反饋的日志看,也只能看到是因?yàn)閮?nèi)存釋放出棧異常质蕉。一早上班就看了一下這個(gè)閃退的問題势篡。記錄一下兩個(gè)小時(shí)的爬坑記翩肌。
Bug描述
設(shè)備:iPhone5s,系統(tǒng):iOS 8.3禁悠,在進(jìn)入一個(gè)WKWebView加載的本地html標(biāo)簽的頁面念祭,退出該頁面必定閃退。而且這個(gè)問題只會(huì)出現(xiàn)在iOS 10以下的系統(tǒng)碍侦。
為愛Debug
因?yàn)橹朗莾?nèi)存釋放的問題粱坤,所以從dealloc
方法入手,發(fā)現(xiàn)程序正常的走了dealloc
方法瓷产,然后就崩潰了站玄。因?yàn)檫@是一個(gè)很簡(jiǎn)單的頁面,整個(gè)頁面就三個(gè)控件濒旦,WKWebView和兩個(gè)UIButton株旷,兩個(gè)Button是根據(jù)WKWebView的滾動(dòng)與否決定顯不顯示。然后發(fā)現(xiàn)只要這個(gè)頁面有WKWebView就會(huì)崩潰尔邓。通過分析發(fā)現(xiàn)灾常,是因?yàn)樵O(shè)置了WKWebView.scrollView.delegate,而scrollView在WKWebView是strong強(qiáng)引用的铃拇,而在這個(gè)頁面監(jiān)聽了scrollView的delegate钞瀑。解決方法就是在dealloc
方法中將delegate置空。WKWebView.scrollView.delegate = nil
慷荔。