我想知道是否有一种方法可以减少或重用wkwebview的实例,因为每次在wkwebview上实现一种方法
wkWebView.load(myRequest)
已生成一个Web实例并将其保留在内存中,在使用Safari调试时,我可以看到所有实例:
每次显示同一页面时,内存消耗都会增加:
加载“ about:blank”以及wkWebView = nil都无法解决问题。
答案 0 :(得分:0)
经过研究,我发现了自己的错误:
var userController: WKUserContentController = WKUserContentController()
在viewDidLoad中导致内存泄漏,因为从未释放过该userController(对于wkwebview也是如此)。
我的解决方案是:在包含wkWebView的viewController的类中声明WKUserContentController:
userController.add(self, name: "interOp")
webConfig.userContentController = userController;
在viewDidLoad中对其的引用:
userController.removeScriptMessageHandler(forName: "interOp")
并在viewWillDisappear中释放它:
{{1}}
也许这不是解决此问题的更好方法,但它可行。当视图被关闭时,它不会在Safari中留下任何东西并释放他的内存占用: