Un problème auquel je suis souvent confronté est de ne pas pouvoir créer et détruire correctement un ViewController lors de l'ajout de la vue du ViewController en tant que sous-vue, sans utiliser un contrôleur de navigation.
par exemple:
MyViewController *myViewController = [[MyViewController alloc] init];
[currentView addSubView:myViewController.view];
[myViewController release];
Cela fonctionne très bien s'il s'agit d'une vue sans contrôleur et qu'il n'y a pas d'UIControls avec lesquels l'utilisateur doit interagir. Cependant, envoyer des messages au contrôleur de vue de cette vue provoque une EXEC_BAD_ACCESS car ils ne sont plus en mémoire.
MyViewController *myViewController = [[MyViewController alloc] init];
[currentView addSubView:myViewController.view];
Cela fonctionne lors de l'envoi de messages, cependant c'est une fuite de mémoire et est détecté par l'analyseur statique.
Le définir en tant que propriété du contrôleur de vue actuel fonctionne parfois. Mais si je dois en créer un tas avec un nombre inconnu de MyViewControllers et les ajouter à quelque chose comme un UIScrollView, cela ne fonctionne pas non plus.
for (int i = 0; i < [myViewControllers count]; i++) {
MyViewController *myTmpViewController = [[MyViewController alloc] init];
[myCurrentUIScrollView addSubview:myTmpViewController.view];
[myTmpViewController release];
}
Cela va quand même planter si myTmpViewController a une interaction utilisateur ou quelque chose de similaire. Comment ajouter ceci et le libérer correctement?