WKWebView аварийно завершает работу при использовании 30 МБ ОЗУ на iOS 9 - PullRequest
0 голосов
/ 16 июня 2020

У меня есть WKWebView, который загружает пользовательский файл HTML с нашего сервера. В нашем приложении есть кнопка для изменения размера шрифта веб-страницы с помощью JavaScript путем перебора всех элементов и установки их свойства style (это не должно иметь значения, поскольку на других iOS он работает отлично).

На устройствах iOS 9, когда шрифт становится все больше и больше, веб-просмотр становится все медленнее, чтобы реагировать на изменение шрифта. Например, изменение с 22 пикселей на 24 пикселей вступает в силу за 2 секунды, а изменение с 24 пикселей на 26 пикселей может занять 3 секунды или больше. В конце концов, когда размер шрифта достигнет 28 пикселей, веб-просмотр будет сканировать sh приложение с предупреждением о памяти в консоли. Однако, если не подключиться к Xcode, он не будет треснуть sh, а превратится в пустой экран, как описано в этом аналогичном сообщении .

Это не дубликат, поскольку я прошу для чего-то другого:

Я реализовал webViewWebContentProcessDidTerminate и могу подтвердить, что он был вызван, но когда я пытаюсь перезагрузить webView, он снова вылетает и падает sh -reload-cra sh л oop. Панель Xcode показывает, что моя память использует 31 МБ ОЗУ, что составляет 5% для моего iPhone 4S, поэтому это не должно быть проблемой памяти true . Веб-страница состоит только из абзацев текста, поэтому это системная ошибка или я делаю что-то не так? Прокомментируйте, если вам нужны дополнительные сведения.

Вот мой код:

class ReaderController: UIViewController {

    // loads webView, injects JavaScript, handles button, etc.

    func loadData() {
        let html = // get html 
        webView.loadHTMLString(html, baseURL: htmlURL)
    }
}

extension ReaderController: WKNavigationDelegate {
    func webViewWebContentProcessDidTerminate(_ webView: WKWebView) {
        loadData()
    }
}
...