J'ai un UITableViewController en tant que rootViewController pour mon navigateur navigator. Lorsque j'appuie sur une cellule de tableau, je fais ce qui suit:Essayer de comprendre le contrôle de NavigationController pour ViewControllers sur sa pile
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
MessageHistory *msg = (MessageHistory *)[[self fetchedResultsController]objectAtIndexPath:indexPath];
ConversationViewController *chatController = [[ConversationViewController alloc]initWithNibName:@"ConversationView" bundle:nil andUser:msg.user];
[self.navigationController pushViewController:chatController animated:YES];
[chatController release];
Mais quand je reviens de la chatController (en utilisant le bouton de retour sur la barre de navigation) je reçois « EXC_BAD_ACCESS »
commentaires
//[chatController release];
résout le problème. Comment? Je pensais qu'en poussant à la navigationController ajoute un nombre de retenue et quand pop de lui libérer?
Aussi je crois que si je n'inclue pas la version après avoir poussé sur le contrôleur de nav je génère une fuite.
Une idée de ce qui se passe ici?
Cela ressemble à une instance désallouée. Exécutez votre application avec NSZombieEnabled pour voir à quelle instance vous avez des problèmes. – Vladimir
Merci pour le conseil. Je ne savais pas à propos de NSZombieEnabled, il a aidé comme vous l'avez dit à trouver l'instance désaffectée. Pour ceux qui ne connaissent pas NSZombieEnabled, voici comment l'activer dans xcode: 1. Double-cliquez sur un exécutable dans le groupe Executables de votre projet Xcode. 2. Cliquez sur l'onglet Arguments. 3. Dans la section "Variables à définir dans l'environnement:", créez une variable appelée "NSZombieEnabled" et définissez sa valeur sur "YES". Assurez-vous de supprimer ceci pour la distribution! – sharkan