je ne pouvais pas comprendre pourquoi ce code est marqué comme ayant des fuites de mémoire:Pourquoi les instruments marquent-ils les fuites de mémoire sur UIColor et NSArray?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
MenuViewController *menuView = [[MenuViewController alloc] initWithNibName:@"MenuView" bundle:[NSBundle mainBundle]];
navigationController = [[UINavigationController alloc] initWithRootViewController:menuView];
navigationController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"livreto-verso-horizontal.png"]]; // memory leak here 47,1%
[menuView release];
BilheteViewController *rightView = [[BilheteViewController alloc] initWithNibName:@"BilheteView" bundle: [NSBundle mainBundle]];
spliViewController.viewControllers = [NSArray arrayWithObjects:navigationController, rightView, nil]; // memory leak here 52,9%
[window addSubview:spliViewController.view];
[window makeKeyAndVisible];
[rightView release];
return YES;
}
Juste les lignes marquées avec des problèmes:
navigationController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"livreto-verso-horizontal.png"]]
et
spliViewController.viewControllers = [NSArray arrayWithObjects:navigationController, rightView, nil];
Comment puis-je résoudre cette fuite?
Update 1
méthode dealloc App délégué, à la fois NavigationController et spliViewController sont libérés:
- (void)dealloc {
[navigationController release];
[spliViewController release];
[window release];
[super dealloc];
}
J'ai mis à jour la question avec la méthode dealloc qui libère mon contrôleur de navigation. Je ne pense pas que ce soit faux. Le faites vous? –
Étant donné que vous configurez cette vue dans le délégué de l'application, cette dernière ne doit jamais être appelée. Normalement, vous ne libérerez jamais un contrôleur de navigation dans un contrôleur de vue. –
Bonjour Kendall, quelle méthode devrais-je utiliser pour libérer les contrôleurs sur un délégué d'application? applicationWillFinish? –