PDA

View Full Version : UITabBarController and memory issues




Reflejo
Dec 15, 2008, 07:40 AM
Hello,



I'm using a tabbarcontroller which i create programatically, when i release the controller without touch any tabitem dealloc works great and all viewcontrollers are deallocated. If i touch some tabBarItem after the realese, tabbarcontroller doesn't release viewcontrollers.

There is a small example similar to what i'm doing.

Definition:

@property (assign, nonatomic) UITabBarController *tbController;

Alloc:

NSMutableArray *tbControllers = [[NSMutableArray alloc] initWithCapacity:3];

View1 *view1 = [[View1 alloc] init];
view1.tabBarItem.title = @"1";
[tbControllers addObject:view1];
[view1 release];

View2 *view2 = [[View2 alloc] init];
view2.tabBarItem.title = @"1";
[tbControllers addObject:view2];
[view2 release];

self.tbController = [[UITabBarController alloc] init];
tbController.viewControllers = tbControllers;
tbController.view.frame = CGRectMake(0,0, 320, 320);
[tbControllers release];
[self.view addSubview:tbController.view];

Dealloc:

[tbController release];

View1 is an empty UIViewController with a debug output in viewDidLoad and dealloc. View2 too.

- (void)viewDidLoad {
NSLog(@"INIT view1");
[super viewDidLoad];
}

- (void)dealloc {
NSLog(@"DEALLOCING 1");
[super dealloc];
}

I'm missing something or there is a bug?.



Reflejo
Dec 15, 2008, 12:26 PM
Also i've noticed that retainCount of each ViewController (inside tabbarController) increase by 1 every time i switch tabbaritem so when i release tabbarcontroller views are not deallocated.

Any idea why?

Thank you

dejo
Dec 15, 2008, 12:28 PM
In which method are you calling that Alloc code?