В моем приложении AppDelegate я запускаю контроллер tabBar, к которому добавлена группа navigationController в качестве вкладок. Я использую следующий код:tabBarController memory leak
// 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 являются контроллеры навигации, которые будут добавлены, которые должным образом выпущенные ALLtogether несколько строк позже (они создаются с помощью Alloc). tabBarController - это переменная класса, которая была создана с использованием @property (неатомных, сохраняемых) и @synthesize tabBarController. Он получает команду release в методе dealloc. Теперь инструменты говорят мне, что у меня есть две утечки памяти на линии с помощью «tabBarController.viewControllers = navigatioControllers». Я пытал голову, но я не понимаю, почему: По моему мнению, navigationControllers должны быть выпущены автоматически, и если я отправлю ему команду release несколько строк позже, приложение выйдет из строя, поэтому я думаю, что я прав. Какие-нибудь догадки, что не так?
Большое спасибо!
пожалуйста, напишите полный код для выделения/deallocating контроллеров и TabBar, нет ничего, чтобы читать из этого фрагмента. –
Я добавил код, который вы попросили, надеюсь, что он поможет – Robin