В моем AppDelegate я запускаю TabBar Controller, к которому в виде вкладок добавляется группа navigationController. Я использую следующий код:
// Init tabBar Controller
tabBarController = [[[UITabBarController alloc] init] retain];
// Init Root Views of navigation controllers
FirstRootViewController* firstViewController = [[[FirstRootViewController alloc] init] autorelease];
SecondRootViewController* secondViewController = [[[SecondRootViewController alloc] init] autorelease];
ThirdRootViewController* thirdViewController = [[[ThirdRootViewController alloc] init] autorelease];
// Init Navigation controllers of tabs
UINavigationController* firstNavController = [[[UINavigationController alloc] initWithRootViewController:firstViewController] autorelease];
UINavigationController* secondNavController = [[[UINavigationController alloc] initWithRootViewController:secondViewController] autorelease];
UINavigationController* thirdNavController = [[[UINavigationController alloc] initWithRootViewController:thirdViewController] autorelease];
firstNavController.navigationBar.barStyle = UIBarStyleBlack;
secondNavController.navigationBar.barStyle = UIBarStyleBlack;
thirdNavController.navigationBar.barStyle = UIBarStyleBlack;
// Create array for tabBarController and add navigation controllers to tabBarController
NSArray *navigationControllers = [NSArray arrayWithObjects:firstNavController, secondNavController, thirdNavController, nil];
tabBarController.viewControllers = navigationControllers;
[window addSubview:tabBarController.view];
И функция dealloc:
- (void)dealloc {
[window release];
[tabBarController release];
[super dealloc]; }
firstNavController - это навигационные контроллеры, которые должны быть добавлены и выпущены должным образом несколькими строками позже (они создаются с помощью alloc).
TabBarController - это переменная класса, созданная с помощью @property (nonatomic, retain) и @synthesize tabBarController. Он получает команду освобождения в методе dealloc.
Теперь инструменты сообщают мне, что у меня две утечки памяти в строке с "tabBarController.viewControllers = navigationController".
Я пытал свою голову, но я не понимаю, почему: насколько я понимаю, навигационные контроллеры должны выпускаться автоматически, и если я отправляю команду на освобождение несколькими строками позже, приложение вылетает, поэтому я думаю, что я прав.
Есть предположения, что не так?
Большое спасибо!