Полностью удалите UIVIewController - PullRequest
0 голосов
/ 27 ноября 2011

У меня есть 2 ViewController A & B. При нажатии кнопки на A, B появляется через следующий код:

 -(void)launchGame
{
    {
    SoloGameVC_iPad *b =  [[SoloGameVC_iPad alloc]initWithNibName:@"SoloGameVC_iPad" bundle:nil];
    [self b animated:YES completion:nil];
    [b release];
    }

Затем появляется B, и «игра» начинается с подсчета очков, касаний, просмотра изображений и т. Д. И т. Д.

Когда игра закончена (например, таймер заканчивается) ИЛИ я нажимаю кнопку отмены, отображаемую в B, я возвращаюсь к A, используя следующий код:

HomeVC_iPad *home = [[HomeVC_iPad alloc]initWithNibName:@"HomeVC_iPad" bundle:nil];
[self presentViewController:home animated:YES completion:nil];
[home release];

Появляется A, и я могу выбрать другие параметры, тип игры и перезапустить B с помощью предыдущего кода. Параметры игры, настройки и т. Д. Хранятся в глобальном делегате.

Когда B появляется тогда во второй раз, я вижу, что оценки подсчитываются дважды, как если бы старая B все еще была там, и что методы вызывались дважды (обновление оценки для новой B и обновление оценки для старой B).

В профилировании распределения (инструмент) я вижу, что цикл A-> B-> A-> B заставляет память расти, потому что первый B не был действительно удален из стека памяти.

Мой вопрос: что такое кодирование, чтобы быть уверенным, что когда я делаю A-> B-> A B, полностью исчезает из выполнения? Я хотел бы заново создать экземпляр B как новую игру, начиная с нового счета, таймера и т. Д.

...