Что ж, его не выпускают, потому что nextLevelViewController все еще сохраняется где-то еще.Скорее всего, в вашей переменной nextLevelViewController.
- (IBAction)openNextLevelViewController
{
NSLog(@"openNextlevelViewController");
// assuming you have nib already set up
UIViewController *nextLevelViewController = [[NextLevelViewController alloc] init];
// RETAIN COUNT = 1
// navigationController retains your controller
[self.navigationController pushViewController:nextLevelViewController animated:YES];
// RETAIN COUNT = 2
// Don't need it any more let navigation controller handle it.
[nextLevelViewController release]
// RETAIN COUNT = 1 (by NavigationController)
}
Далее
-(IBAction) returnToStart {
[self.navigationController popViewControllerAnimated:YES];
// RETAIN COUNT = 0, dealloc will be called on your viewController, make sure to release all your retained objects.
}
Теперь, когда ваш контроллер отключен, он ДОЛЖЕН быть освобожден (его не следует хранить где-либо еще).И в следующий раз, когда вы вызовете openNExtLevelViewController, он все равно будет инициализировать новый экземпляр вашего viewController.
Я поклонник выпуска viewController, когда он больше не нужен (отображается), вместо того, чтобы держать его в памяти,Пусть navigationController и TabBarController обрабатывают viewControllers всякий раз, когда это возможно.