Управление памятью UIWebView

У меня есть проблема с управлением памятью.

Я разрабатываю приложение, которое делает интенсивное использование UIWebView. Это приложение генерирует динамично много UIWebViews при загрузке содержания из моего сервера. Некоторые из этих UIWebViews являются довольно крупными и имеют много изображений.

Если я использую инструменты для обнаружения утечек, я не обнаруживаю никого. Однако много объектов выделяется, и я подозреваю, что это имеет отношение к UIWebViews.

Когда webviews выпускают, потому что больше не необходимый, кажется, что не вся память освобождена. Я имею в виду, после запроса к моему серверу приложение создает UITableView, и много webviews (инструменты говорят что приблизительно 8 МБ). Когда пользовательское касание назад, все они выпущены, но использование памяти только постепенно уменьшает приблизительно 2-3 Мбита, и после 5-10 минут с помощью приложения, оно отказывает.

Я пропускаю что-то? Кто-либо знает то, что могло происходить?

Спасибо!

18
задан wolfrevo 1 June 2010 в 15:07
поделиться

1 ответ

Если вы добавляете несколько вложенных представлений в один и тот же экземпляр контроллера представления, вы должны удалить старое вложенное представление из супервидения перед добавлением нового вложенного представления.

Добавьте тег к UIWebView, прежде чем добавить его в качестве вложенного вида:

webView.tag  = 10;
[self.view addSubview:webView];

webView = nil;

Перед добавлением нового вида (это очистит старый вид), удалите вложенный вид из супервида:

UIWebView * oldWebView = (UIWebView *)[self.view viewWithTag:10];
[oldWebView removeFromSuperview];

Если вы не удалите старые виды из супервида, они будут накапливаться в памяти, пока вы не освободите контроллер представления.

0
ответ дан 30 November 2019 в 09:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: