今天偶然发现使用wkwebview的界面没有释放,然后各种排查问题最后定位到addScriptMessageHandler这句代码引起了内存泄漏问题。
[configuration.userContentController addScriptMessageHandler:self name:name]
这里userContentController持有了self ,然后 userContentController 又被configuration持有,最终被wkwebview持有,然后wkwebview是self的一个成员变量,所以self也持有self,所以就造成了循环引用,导致界面不会被释放
解决方案
viewWillAppear里面调用addScriptMessageHandler
viewWillDisappear 调用removeScriptMessageHandlerForName
这样内存就正常释放了