2010-08-16 3 views
0

Afin d'accélérer mon application, j'ai créé trois UIViewController différents dans AppDelegate et il a une propriété readonly pour les contrôleurs. Ces contrôleurs sont utilisés pour le contrôleur de navigation.Obtenir le signal 'EXC_BAD_ACCESS' lors de l'appel de [UINavigationController pushViewController]

Si j'appuie sur un bouton de la vue racine, je montre simplement une autre vue en utilisant la méthode pushViewController. Laissez-moi vous montrer du code pour ça ici.

UIViewController* controller = delegate.anotherViewController; 
[delegate.navigationController pushViewController:controller animated:YES]; 

À première fois, bien ce travail, mais si je navigue en arrière et appuyez sur le bouton à nouveau, j'ai un signal « EXC_BAD_ACCESS » en deuxième ligne.

Qu'est-ce qui ne va pas? Et, comment puis-je préparer tous mes contrôleurs de vue au début, ne pas les créer quand ils sont nécessaires?

Répondre

0

La plupart du temps, EXC_BAD_ACCESS signifie que vous avez libéré un objet et que vous essayez de le réutiliser sans le conserver. Regardez si vous avez publié votre viewController trop tôt et si vous (re) l'utilisez de la bonne façon ou pas ...

0

J'ai eu le même problème. Mon code était

AddMedia *info = [[AddMedia alloc] initWithStyle:UITableViewStyleGrouped]; 
[self.navigationController pushViewController:info animated:YES]; 
[info release]; 

Je libérais mon viewCOntroller qui plantait l'application.

Lorsque j'ai commenté cette ligne, cela a fonctionné de manière transparente. Le code après le changement est:

AddMedia *info = [[AddMedia alloc] initWithStyle:UITableViewStyleGrouped]; 
[self.navigationController pushViewController:info animated:YES]; 
// [info release]; 
Questions connexes