J'ai donc modifié l'exemple PageControl d'Apple pour charger dynamiquement divers contrôleurs de navigation (ainsi que leurs contrôleurs de vue racine) dans la vue déroulante. J'ai également ajouté une technique qui tente de décharger un contrôleur de navigation quand il n'est plus nécessaire. Je ne suis à ObjC que depuis un peu plus d'un mois, donc je ne suis pas sûr de faire le déchargement correctement. S'il vous plaît voir mon code ci-dessous, suivi de mes questions.Déchargement des ViewControllers de l'exemple PageControl d'Apple + Relation entre UINavigationController et ses contrôleurs RootView
D'abord, je crée un tableau mutable et le remplir avec des valeurs nulles, tout comme le fait d'Apple:
// Create dummy array for viewControllers array, fill it with nulls, and assign to viewControllers
NSMutableArray *array = [[NSMutableArray alloc] init];
for (unsigned i = 0; i <= kNumberOfPages; i++)
{
[array addObject:[NSNull null]];
}
self.viewControllers = array;
[array release];
... Plus tard, je remplir le tableau avec des objets UINavigationController comme si (ce est juste un code partiel, excusez s'il vous plaît les parties manquantes ... l'idée principale est que j'attribue un couple de choses, les assigne et ensuite libère):
id controller = [[classForViewController alloc] initWithNibName:NSStringFromClass(classForViewController) bundle:nil];
navController = [[UINavigationController alloc] initWithRootViewController:controller];
[controller release];
[self.viewControllers replaceObjectAtIndex:page withObject:navController];
[navController release];
... Enfin, si une page n'a pas besoin d'être plus chargé que je fais ceci:
[self.viewControllers replaceObjectAtIndex:i withObject:[NSNull null]];
Questions:
je crois comprendre qu'une fois Je remplace le contrôleur de navigation dans mon tableau viewControllers avec null, le tableau libère le contrôleur de navigation. Ainsi, le compte de retenue du contrôleur de navigation atteint zéro et n'occupe plus de mémoire. Est-ce correct? Qu'en est-il du contrôleur de vue racine à l'intérieur du contrôleur de navigation?
Ai-je besoin de faire quoi que ce soit ou est-il libéré automatiquement une fois que le compte de retenue du contrôleur de navigation a atteint zéro?
Merci!
Merci. Rétrospectivement, cela semble évident et je me sens un peu bête d'avoir posé cette question, mais j'avais juste besoin de confirmer ma compréhension :) – iPhoneToucher
La plupart des choses dans le cacao sont évidentes quand on les comprend. Parfois, les comprendre peut être assez dur puisque Cocoa ne ressemble à rien d'autre :). – PeyloW