У меня проблемы с памятью в приложении iPhone, и я понятия не имею, что происходит.
Итак, я заметил, что использование памяти приложением постоянно увеличивается при переходе от UIViewController к другому. Я использовал инструмент «Mark Heap» из инструмента «Allocations», и кажется, что единственными объектами, которые не были освобождены, являются мои UIViewControllers.
Чтобы быть более конкретным, я позволил взять два моих UIViewControllers. Первый называется PuzzleViewController, а второй - Options. Когда приложение запускается, появляется PuzzleViewController. Я отмечаю кучу здесь, чтобы установить базовую линию, и после этого я нажимаю кнопку «Опции», которая представляет Options UIViewController. Я возвращаюсь к первому и снова отмечаю кучу. Повторяя эти шаги снова и снова (примерно 20 раз или около того: D), я замечаю, что после каждого Heapshot у меня остается около 22 объектов, оставшихся в живых. Два из этих объектов являются экземплярами моих UIViewControllers.
Я действительно понятия не имею, что происходит.
Вот как я могу переключиться в Options UIViewController:
- (IBAction) onOptionsButton: (id) sender
{
Options *viewController = [[Options alloc] init];
[self presentModalViewController:viewController animated:YES];
[viewController release];
}
А вот как я возвращаюсь к PuzzleViewController:
- (IBAction) onMainMenu:(id) sender
{
PuzzleViewController *modalView = [[PuzzleViewController alloc] init];
[self presentModalViewController:modalView animated:YES];
[modalView release];
}
Мои функции viewDidUnload вызываются правильно, но никакая функция dealloc никогда не вызывается.
Спасибо,
Андрей