Memory leaks iOS 12+;内存泄漏-WKWebView和UIWebView

Memory leaks iOS 12+;内存泄漏-WKWebView和UIWebView,memory-leaks,uiwebview,wkwebview,ios12,javascriptcore,Memory Leaks,Uiwebview,Wkwebview,Ios12,Javascriptcore,这不是一个问题,但我在这里发帖,希望它能拯救其他人的理智(我刚刚花了一天中最好的时间来解决这个问题)。我发现了iOS 12.0+中出现的内存泄漏,影响了WKWebView和UIWebView。一旦实例化这两个Web视图中的任何一个,就会出现泄漏。Instruments将泄漏识别为来自JavaScriptCore,我想这就是它对两个Web视图产生同等影响的原因 我试图找出我做错了什么,当我决定尝试一个旧的iOS版本(11.4-12.0之前的版本)时,我注意到漏洞已经消失了。我每次都能复制这个 要复

这不是一个问题,但我在这里发帖,希望它能拯救其他人的理智(我刚刚花了一天中最好的时间来解决这个问题)。我发现了iOS 12.0+中出现的内存泄漏,影响了WKWebView和UIWebView。一旦实例化这两个Web视图中的任何一个,就会出现泄漏。Instruments将泄漏识别为来自JavaScriptCore,我想这就是它对两个Web视图产生同等影响的原因

我试图找出我做错了什么,当我决定尝试一个旧的iOS版本(11.4-12.0之前的版本)时,我注意到漏洞已经消失了。我每次都能复制这个

要复制,只需在类上分配一个webview实例

let webview = WKWebView()

立即,您会注意到iOS 12.0/12.1上有4个漏洞,如果在iOS 11.4上运行代码,这些漏洞将不再存在。有4个单独的泄漏;3 x 96字节和1 x 128字节


我已经通过BugReporter向苹果提交了一个bug,在Openradar上复制了这个bug:

这里也有同样的问题。我正在测试我的应用程序是否存在内存泄漏,一旦我打开UIWebView,它就会给出确切的泄漏信息

我认为这与baseurl中的javascript有关,但将其设置为nil会产生相同的结果。这是我的webview设置:

NSURL *url = [NSURL URLWithString:@"https://example.com"];
[self.webView loadHTMLString: htmlContent baseURL: url];

希望苹果能尽快给我们一个解决方案。

有趣的是,你甚至不需要在webview中加载任何内容就可以触发泄漏。苹果还没有回复我的错误。我一听到消息就会发回。很高兴你找到了我的帖子:)你尝试过这里发布的解决方案了吗:也许在viewwilldiscover中将URL和html设置为nil会有所帮助?但是,如果您是说简单地实例化UIWebView会造成泄漏,那么这不重要。有一件事我确实觉得很有趣,那就是重复使用webview不会带来任何新的漏洞,所以我认为只要你不创建太多的webview,这并不是什么大问题。是的,我有。我什么都试过了。唯一有效的方法就是回到iOS11.X。一旦你再次切换到iOS12+,泄漏就会再次出现。我很惊讶有更多的人没有遇到它。我很高兴它对你有帮助,因为我花了将近一整天的时间来寻找它!刚刚找到你的帖子,很高兴我不是唯一一个点击这个的人。祈祷苹果有一个解决方案。好消息是我已经在iOS 13测试版上进行了测试,这个问题似乎已经解决了!坏消息是苹果可能不会为iOS 12版本解决这个问题。
NSURL *url = [NSURL URLWithString:@"https://example.com"];
[self.webView loadHTMLString: htmlContent baseURL: url];