У меня есть 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 как новую игру, начиная с нового счета, таймера и т. Д.