Быстрый вопрос, надеюсь, я просто что-то упустил. Хорошо, у меня есть один класс, который содержит указатель на другой; MainMenuClass и NormalGameClass. Внутри MainMenuClass я делаю следующее.
m_NormalGame = [[NormalGameMode alloc] initWithNibName:@"NormalGameMode" bundle:[NSBundle mainBundle]];
m_NormalGame.delegate = self;
[self presentModalViewController:m_NormalGame animated:YES];
Теперь я впервые заметил проблему, когда не вызывается функция dealloc NormalGameClass, поэтому я сделал несколько вызовов retainCount и по какой-то причине, когда она возвращается к функции release в MainMenu, ее счетчик сохранения равен 6. Далее копание меня очень смутило. Первая строка после viewDidLoad в NormalGameClass, его [self retainCount] - 4. Кто-нибудь знает, что здесь происходит? Я вызываю alloc только для NormalGameClass один раз, и все же он сохраняется до 6? Как ни странно, никогда не было этого. Спасибо за понимание.
ОБНОВЛЕНИЕ: возился с вещами и обнаружил, что это неудобно. В MainMenuClass вот как я избавляюсь от NormalGame.
[self dismissModalViewControllerAnimated:NO];
m_NormalGame.delegate = nil;
[m_NormalGame release];
Теперь, с этой настройкой, dealloc для NormalGame никогда не вызывается. Тем не менее, если я вызываю [m_NormalGame release] сразу же после сообщения, опубликованного выше, он вызывает dealloc для NormalGame ... дважды. = / Раскрась меня в замешательстве.