ios - 如何完成/破坏不需要的 webview 进程?
问题描述
伙计们,我一直在开发一个应用程序,它一半是原生的,一半是基于 WKWebView 的。问题是,当我从本机端更改用户并使用 WebView 再次登录系统时,旧的 WebView 继续工作。声音从旧网络播放。我也可以从 Safari 的开发者工具中看到它。
self.webview?.load(URLRequest(url: URL(string: lastURL)!))
当我从本机端选择另一个用户时,我会在 cookie 中设置新的 sessionID 后获得一个会话并在网络上连接新会话。我再次加载网络。
self.webview?.load(URLRequest(url: URL(string: lastURL)!))
我试过通知和观察者,
@objc func destroyWeb(notification: NSNotification){
print("old webview is empty now") //debugging lol
self.webview.load(URLRequest(url:(URL(string: "about:blank")!)))
self.webview.stopLoading()
}
但没有太大帮助。让我告诉你它是怎么回事。
解决方案
你的旧 WebView 仍然可以工作,因为旧的 webview 没有调用 dealloc 方法。您可以将 dealloc 方法添加到 webview 代码中,例如
deinit {
debugPrint("webview==>>deinit )")
}
观察 webview 是否没有解除分配。如果你不想使用 webview,你应该释放它们
推荐阅读
- python - 是否可以复制本网站的 AJAX 调用?(网络抓取问题)
- r - tidyr complete() 是否使用 dplyr group_by() 函数?
- wordpress - apache/wordpress 更改域时,资产仍使用旧域 url
- javascript - 将文本字段聚焦在列表中
- c++ - 我不能将指针作为 STL 谓词的参数吗?
- javascript - 如何使用 React onClick 在 body 上切换一个类
- java - 如何打印此循环模式
- java - Android Studio 错误:“Android 资源链接失败。错误:链接引用失败”与谷歌服务 API
- django - 如何在 django admin 中下载 BinaryField?
- python - 这个斐波那契 Lambda 函数是如何工作的?