Быстрый вопрос, надеюсь, я просто пропустил что-то простое. Хорошо, у меня есть один класс, который содержит указатель на другой; MainMenuClass и NormalGameClass. Внутри MainMenuClass я делаю следующее.iPhone - Сохранение счета - Сохранение счета идет без видимой причины
m_NormalGame = [[NormalGameMode alloc] initWithNibName:@"NormalGameMode" bundle:[NSBundle mainBundle]];
m_NormalGame.delegate = self;
[self presentModalViewController:m_NormalGame animated:YES];
Теперь я первый заметил проблему, когда функция dealloc в NormalGameClass' не будучи под названием, так что я сделал некоторые retainCount звонки и по какой-то причине, когда он делает свой путь обратно к функции выхода в 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 ... дважды. =/Нарисуйте меня в замешательстве.
Это ваши собственные классы или они происходят из других библиотек? – 2010-08-27 21:04:57
Это UIViewControllers, просто переименованные. – Midnight