Массивная утечка памяти в UIWebView - PullRequest
4 голосов
/ 01 июля 2011

Последовательные звонки на

[self.webView loadHTMLString:[_detailItem htmlText] baseURL:nil];

вызывало взрыв использования памяти на iPad iOS 4.3 (устройство). Простое комментирование этой строки решило проблему, но мне нужно иметь возможность отображать HTML-контент.

В официальных документах ничего не говорится о UIWebView сохранении / освобождении контента или кэшировании, ничего о деталях управления памятью.

Теперь сам экземпляр создается в NIB-файле, и все, что я делаю, это вызываю метод выше с новым содержимым. Должен ли я выпускать / alloc-init UIWebView при каждом запросе, чтобы избежать этой проблемы? Это известная проблема?

Я знаю, что проблема не в моем коде, потому что просто закомментирование этой строки решает проблему. Мои объекты освобождаются нормально. UIWebView виноват.

UPDATE

Освобождение и перераспределение веб-представления каждый раз действительно решало проблему. Итак, обращайтесь к любому, кто использует веб-представление для выполнения последовательных загрузок: выделять, выполнять загрузку, отпускать, распределять, ... и у вас не будет проблем с памятью.

1 Ответ

0 голосов
/ 07 октября 2013

Недостаточно очков для комментариев.

Связанный пост StackOverflow Reused UiWebView цитирует Apple Engineer: «Не используйте UIWebViews повторно, это не то, как они должны были использоваться».

Если вам действительно нужно повторно использовать UIWebView, вы можете использовать Java Script.Что-то наподобие: [self.definitionWebView stringByEvaluatingJavaScriptFromString: [NSString stringWithFormat: @ "setBody (\"% @ \ ");", _detailItem htmlText]];

...