今天偶然發(fā)現(xiàn)使用wkwebview的界面沒有釋放,然后各種排查問題最后定位到addScriptMessageHandler這句代碼引起了內(nèi)存泄漏問題。
[configuration.userContentController addScriptMessageHandler:self name:name]
這里userContentController持有了self ,然后?userContentController?又被configuration持有,最終被wkwebview持有,然后wkwebview是self的一個(gè)成員變量,所以self也持有self摩幔,所以就造成了循環(huán)引用,導(dǎo)致界面不會(huì)被釋放
解決方案
viewWillAppear里面調(diào)用addScriptMessageHandler
viewWillDisappear 調(diào)用removeScriptMessageHandlerForName
這樣內(nèi)存就正常釋放了