Утечка памяти в iOS 12+ - WKWebView и UIWebView - программирование

Утечка памяти в iOS 12+ - WKWebView и UIWebView

Это не вопрос, но я публикую здесь в надежде, что это спасет чужое здравомыслие (я только что провел лучшую часть дня, выясняя это). Я обнаружил утечку памяти, которая появилась в iOS 12. 0+, которая влияет на WKWebView и UIWebView. Утечка появляется, как только вы создаете экземпляр любого из двух веб-просмотров. Инструменты идентифицируют утечку как происходящую из JavaScriptCore, и я думаю, поэтому она одинаково влияет на оба веб-просмотра.

Я пытался понять, что я делаю неправильно, когда я решил попробовать более старую версию iOS (11.4 - версия до 12.0), и я заметил, что утечка исчезла. Я могу воспроизвести это каждый раз.

Чтобы воспроизвести все, что вам нужно сделать, это выделить экземпляр веб-просмотра в классе.

let webview = WKWebView()

или же

let webview = UIWebView()

Сразу вы заметите 4 утечки на iOS 12.0/12.1, которых больше нет, если вы запускаете код на iOS 11.4. Есть 4 отдельных утечки; 3 х 96 байт и 1 х 128 байт.

Leak-WKWebView

Я отправил сообщение об ошибке в Apple через BugReporter, дублированный на Openradar: https://openradar.appspot.com/radar?id=6132657108811776

4b9b3361

Ответ 1

Та же проблема здесь. Проверял мое приложение на наличие утечек памяти, и как только я открою UIWebView, он даст мне именно эти утечки.

Я думал, что это связано с javascript из baseurl, но установка его на ноль дает тот же результат. Это мои настройки для веб-просмотра:

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

Надеюсь, Apple даст нам решение в ближайшее время.