Прежде всего, извините за мой английский (я испанский) и за то, что я новичок.Я занимаюсь разработкой второго приложения для iPad для обучения и у меня возникли проблемы с управлением памятью.Я сталкиваюсь с этой проблемой уже около месяца, поэтому я подумал, что, возможно, какой-то эксперт в этом великом сообществе мог бы мне немного помочь.
Мой сценарий:
Это простое приложение для электронных книг.У меня есть основной вид, из которого пользователь может открыть два модальных вида.Основная проблема в одном из модальных представлений.Там у меня есть прокрутка, которая управляет всеми страницами.Прямо сейчас есть 12 страниц.Я пытался выпустить все и т. Д., Но что-то осталось в памяти, потому что в инструментах память продолжает расти, и когда я закрываю модальное представление и возвращаюсь, через несколько раз он падает.Страницы являются отдельными символами XIB, и я загружаю их следующим способом:
- (void)loadScrollViewWithPage:(int)page {
if (page < 0) return;
if (page >= MyNumberOfPages) return;
if ((NSNull *)controller != [NSNull null]) {
NSString *className = [NSString stringWithFormat:@"Pagina%d", page];
Class myClass = NSClassFromString(className);
controller = [[myClass alloc] initWithNibName:className bundle:nil];
// I have tried autorelease and even retain] autorelease.
[viewControllers replaceObjectAtIndex:page withObject:controller];
CGRect frame = scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
controller.view.frame = frame;
if (page != 0){
controller.view.tag = page;
}else {
controller.view.tag = 9999;
}
[scrollView addSubview:controller.view];
[scrollView sendSubviewToBack:controller.view];
[controller release];
}
}
Каждый раз загружаю 3 страницы, одну видимую, левую и правую.Я пытаюсь разгрузить (удалить или избавиться) их таким образом (для тех, кто вокруг 3 загружен):
[viewControllers removeObjectAtIndex:pagi - 2];
[[scrollView viewWithTag:pagi - 2] removeFromSuperview];
Так что у меня две проблемы ... Если я отпускаю контроллер, как я делаюв методе выше, мои IBActions на некоторых страницах приводят к сбою приложения.Но если я все равно отпущу его и удалю IBActions, память тоже будет расти.В Инструментах он не показывает утечек, но он падает после увеличения 1 МБ или 2 МБ памяти.
Я вошел в систему всех страниц viewDidUnload и deallocs, и они выгружаются только при наличии предупреждения о памяти.
Наконец, что более странно для меня, это то, что если я не использую [выпуск контроллера];приложения остаются больше времени без сбоев.Но, конечно, они не имеют значения.
Я думаю, что проблема может быть в этом методе, но если это поможет, я мог бы загрузить больше частей кода.Это просто не делать это слишком долго здесь.
Есть идеи?