WkWebView实例和内存泄漏

时间:2019-10-18 15:35:22

标签: ios swift xcode wkwebview

我想知道是否有一种方法可以减少或重用wkwebview的实例,因为每次在wkwebview上实现一种方法

wkWebView.load(myRequest)

已生成一个Web实例并将其保留在内存中,在使用Safari调试时,我可以看到所有实例:

enter image description here

每次显示同一页面时,内存消耗都会增加:

enter image description here

加载“ about:blank”以及wkWebView = nil都无法解决问题。

1 个答案:

答案 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中留下任何东西并释放他的内存占用:

enter image description here