警惕不恰当使用webView.configuration.userContentController.add
造成的内存泄漏问题。
处理方式参考:
swift
// add
webView.configuration.userContentController.add(WeakScriptMessageDelegate(baseWebViewController: self), name: "doSomething")
// remove
deinit {
webView.configuration.userContentController.removeScriptMessageHandler(forName: "uploadImageByBase64")
}
class WeakScriptMessageDelegate: NSObject, WKScriptMessageHandler {
weak var baseWebViewController: BaseWebViewController?
init(baseWebViewController: BaseWebViewController?) {
self.baseWebViewController = baseWebViewController
}
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "doSomething" {
//
}
}
}
// add
webView.configuration.userContentController.add(WeakScriptMessageDelegate(baseWebViewController: self), name: "doSomething")
// remove
deinit {
webView.configuration.userContentController.removeScriptMessageHandler(forName: "uploadImageByBase64")
}
class WeakScriptMessageDelegate: NSObject, WKScriptMessageHandler {
weak var baseWebViewController: BaseWebViewController?
init(baseWebViewController: BaseWebViewController?) {
self.baseWebViewController = baseWebViewController
}
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "doSomething" {
//
}
}
}