web-dev-qa-db-ja.com

iOS 12以降のメモリリーク-WKWebViewおよびUIWebView

これは質問ではありませんが、他の誰かの正気を救うことを期待してここに投稿します(これを理解するために1日の大部分を費やしました)。 iOS 12.0以降で発生したメモリリークを特定しました。これはWKWebViewとUIWebViewに影響します。リークは、2つのWebビューのいずれかをインスタンス化するとすぐに表示されます。 Instrumentsは、リークをJavaScriptCoreからのものとして識別します。これが、両方のWebビューに等しく影響する理由だと思います。

以前のiOSバージョン(11.4-12.0より前のバージョン)を試すことにしたとき、私は何が間違っているのかを理解しようとしていましたが、リークがなくなっていることに気付きました。毎回再現できます。

再現するには、クラスにWebビューのインスタンスを割り当てるだけです。

let webview = WKWebView()

または

let webview = UIWebView()

すぐに、iOS 12.0/12.1で4つのリークに気付くでしょう。iOS11.4でコードを実行すると、これらのリークはなくなります。 4つの別個のリークがあります。 3 x 96バイトと1 x 128バイト。

Leak-WKWebView

Apple BugReporterを介してOpenradarで複製されたバグを提出しました: https://openradar.appspot.com/radar?id=6132657108811776

14
CPR

ここでも同じ問題。アプリでメモリリークをテストしていて、UIWebViewを開くとすぐに、正確なリークが発生します。

BaseurlからのJavaScriptに関係があると思いましたが、nilに設定すると同じ結果が得られます。これは私のwebviewの設定です:

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

希望Appleはすぐに解決策を与えてくれます。

3
Null TX