У меня есть проблема с управлением памятью.
Я разрабатываю приложение, которое делает интенсивное использование UIWebView. Это приложение генерирует динамично много UIWebViews при загрузке содержания из моего сервера. Некоторые из этих UIWebViews являются довольно крупными и имеют много изображений.
Если я использую инструменты для обнаружения утечек, я не обнаруживаю никого. Однако много объектов выделяется, и я подозреваю, что это имеет отношение к UIWebViews.
Когда webviews выпускают, потому что больше не необходимый, кажется, что не вся память освобождена. Я имею в виду, после запроса к моему серверу приложение создает UITableView, и много webviews (инструменты говорят что приблизительно 8 МБ). Когда пользовательское касание назад, все они выпущены, но использование памяти только постепенно уменьшает приблизительно 2-3 Мбита, и после 5-10 минут с помощью приложения, оно отказывает.
Я пропускаю что-то? Кто-либо знает то, что могло происходить?
Спасибо!
Если вы добавляете несколько вложенных представлений в один и тот же экземпляр контроллера представления, вы должны удалить старое вложенное представление из супервидения перед добавлением нового вложенного представления.
Добавьте тег к UIWebView, прежде чем добавить его в качестве вложенного вида:
webView.tag = 10;
[self.view addSubview:webView];
webView = nil;
Перед добавлением нового вида (это очистит старый вид), удалите вложенный вид из супервида:
UIWebView * oldWebView = (UIWebView *)[self.view viewWithTag:10];
[oldWebView removeFromSuperview];
Если вы не удалите старые виды из супервида, они будут накапливаться в памяти, пока вы не освободите контроллер представления.