Dans mon AppDelegate, je lance un contrôleur tabBar, auquel un ensemble de navigationController est ajouté sous forme d'onglets. J'utilise le code suivant:fuite de mémoire tabBarController
// 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];
Et la fonction dealloc:
- (void)dealloc {
[window release];
[tabBarController release];
[super dealloc]; }
firstNavController sont les contrôleurs de navigation à ajouter qui sont correctement libérés alltogether quelques lignes plus tard (ils sont créés à l'aide alloc). tabBarController est une variable de classe qui a été créée en utilisant @property (nonatomic, retain) et @synthesize tabBarController. Il reçoit une commande de libération dans la méthode dealloc. Maintenant, les instruments me disent que j'ai deux fuites de mémoire sur la ligne avec "tabBarController.viewControllers = navigatioControllers". J'ai torturé ma tête, mais je ne vois pas pourquoi: D'après ce que je comprends, les contrôleurs de navigation devraient être libérés automatiquement et si je lui envoie une commande de libération quelques lignes plus tard, l'application plante, donc je suppose que j'ai raison. Tout devine quoi de mal?
Merci beaucoup!
S'il vous plaît poster le code complet pour l'allocation/désallocation les contrôleurs et barre d'onglets, il n'y a rien à lire dans cet extrait. –
J'ai ajouté le code que vous avez demandé, espérons que cela aide – Robin