Je me demande si quelqu'un peut m'aider en ce qui concerne la gestion de la mémoire dans le code ci-dessous. Je suis particulièrement intéressé par rootController, il ne se conserve quand je fais initWithRootViewController ou le fait à la place (qui est je pense) se conservé avec fenêtre addSubview: Je suis juste curieux de savoir ce qui se passe ...Conserver rootViewController?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
Base_TableViewController *rootController = [[Base_TableViewController alloc] init];
navController = [[UINavigationController alloc] initWithRootViewController:rootController];
[window addSubview:[navController view]];
[window makeKeyAndVisible];
[rootController release];
return YES;
}
- (void)dealloc {
[navController release];
[window release];
[super dealloc];
}
EDIT:
Donc essentiellement le code ci-dessus est correct, la version en bas annule l'alloc en haut, "rootController" est conservé par navController?
Merci beaucoup, très apprécié.
Gary
Etes-vous sûr que la fenêtre ne le conserve pas? UIView conserve ses sous-vues et UIWindow est une sous-classe de UIView, il en va de même. – Toastor
Oui. AddSubview incrémentera simplement le nombre de retain sur le membre de vue du navController. Cela n'affectera pas le nombre de retenue sur le contrôleur de vue. – RedBlueThing
Vous avez raison. Comment dites-vous en anglais quand vous lisez quelque chose mais votre esprit se souvient d'autre chose? :) Je n'ai pas vu qu'il appelait le contrôleur pour retourner sa vue. Ma faute! – Toastor