gpt4 book ai didi

ios - WkWebView实例和内存泄漏

转载 作者:行者123 更新时间:2023-11-29 05:23:15 26 4
gpt4 key购买 nike

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

wkWebView.load(myRequest)

生成一个 Web 实例并保留在内存中,我可以在使用 Safari 进行调试时看到它们:

enter image description here

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

enter image description here

加载“about:blank”并不能解决问题,还有wkWebView = nil。

最佳答案

经过一番研究,我发现了我的错误:

let webConfig = WKWebViewConfiguration()
let userController:WKUserContentController = WKUserContentController()
userController.add(self, name: "interOp")

在 viewDidLoad 中导致内存泄漏,因为该 userController 从未被释放(对于 wkwebview 也是如此)。

我的解决方案是:在包含wkWebView的viewController的类中声明WKUserContentController:

var userController: WKUserContentController  = WKUserContentController()

在viewDidLoad中引用它:

userController.add(self, name: "interOp")
webConfig.userContentController = userController;

并在viewWillDisappear中释放它:

userController.removeScriptMessageHandler(forName: "interOp")

也许这不是解决这个问题的更好方法,但它确实有效。当 View 被关闭时,它不会在 Safari 中留下任何内容并释放他的内存占用:

enter image description here

关于ios - WkWebView实例和内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58454042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com