这不是一个问题,但我在这里发帖是希望它能挽救其他人的理智(我刚刚花了一天中最好的时间来弄清楚这个问题)。我发现了从 iOS 12.0+ 出现的内存泄漏,它影响了 WKWebView 和 UIWebView。只要您实例化 2 个 webview 中的任何一个,就会出现泄漏。 Instruments 将泄漏识别为来自 JavaScriptCore,我想这就是它同等影响两个 webview 的原因。
我试图弄清楚我做错了什么,当我决定尝试旧的 iOS 版本(11.4 - 12.0 之前的版本)时,我注意到泄漏已经消失了。我每次都可以重现这个。
要重现,您需要做的就是在一个类上分配一个 webview 的实例。
let webview = WKWebView()
或者
let webview = UIWebView()
立即,您会注意到 iOS 12.0/12.1 上的 4 个泄漏,如果您在 iOS 11.4 上运行代码,它们将不再存在。有 4 个独立的泄漏点; 3 x 96 字节和 1 x 128 字节。
我已经通过 BugReporter 向 Apple 提交了一个错误,在 Openradar 上复制:https://openradar.appspot.com/radar?id=6132657108811776
最佳答案
同样的问题在这里。正在测试我的应用程序是否有任何内存泄漏,一旦我打开 UIWebView,它就会给我那些确切的泄漏。
我认为它与 baseurl 中的 javascript 有关,但将其设置为 nil 会产生相同的结果。这是我对 webview 的设置:
NSURL *url = [NSURL URLWithString:@"https://example.com"];
[self.webView loadHTMLString: htmlContent baseURL: url];
希望苹果尽快给我们一个解决方案。
关于memory-leaks - iOS 12+ 内存泄漏 - WKWebView 和 UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53187305/