Проблема с памятью класса UIViewController - presentModalViewController - PullRequest
0 голосов
/ 27 марта 2011

У меня проблемы с памятью в приложении 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 никогда не вызывается.

Спасибо, Андрей

Ответы [ 2 ]

2 голосов
/ 27 марта 2011

Вы должны позвонить dismissModalViewController, а не presentModalViewController снова, ни воссоздать свой PuzzleViewController.

0 голосов
/ 27 марта 2011
...