Я боролся с проблемами памяти в своем приложении для iphone уже несколько недель и пока не смог решить эту проблему, несмотря на всесторонние исследования в Интернете.
Вот случай: мое приложение связывается сGoogle Analytics API и основан на 3 основных представлениях: основном представлении, представлении настройки и представлении таблицы, в котором представлены данные из Google (с пользовательской ячейкой).Я также создал собственный класс, который выбирает данные из Google, а затем убивает себя, когда закончил.Все данные хранятся в едином центре обработки данных.
Все представления инициируются, а затем освобождаются следующим образом:
if (self.vVisitsTabelView == nil) {
visitsTabelView *initiatevisitsTabelView = [[visitsTabelView alloc] initWithNibName:@"visitsTabelView" bundle:nil];
self.vVisitsTabelView = initiatevisitsTabelView;
[initiatevisitsTabelView release];
}
[self.navigationController pushViewController:vVisitsTabelView animated:YES];
[vVisitsTabelView release];
vVisitsTabelView = nil;
Проблема заключается в том, что при каждой загрузке памяти представления увеличивается, но когда представление выталкивается, оно не освобождает память, хотявызывается dealloc и освобождаются ВСЕ переменные экземпляра.Этот цикл повторяется снова (при повторной загрузке того же представления), и потребление памяти становится очень высоким.После требовательного использования я даже получил 200 Мб реальной памяти и 320 виртуальных на инструментах.Как ни странно, предупреждение о памяти было получено только один раз, однако мое приложение никогда не падало из-за нехватки памяти, и инструменты не показывают утечек.
После входа в фоновый режим память медленно освобождается и используется другими приложениями, однако, когда я возвращаюсь кпамять переднего плана возвращается на уровень перед входом в фон (возможно, из виртуальной памяти?).Этот процесс занимает 9 секунд, и за это время приложение зависает.
Есть идеи, как атаковать эту ситуацию?Я искал повсюду и тщательно следовал всем указаниям.
Любое руководство высоко ценится ...
Пожалуйста, извините, если я не следовал указаниям, я впервые в этом замечательном месте.