J'ai un contrôleur de vue modale qui appelle un autre contrôleur de vue modale dans viewDidLoad basé sur une condition if.L'application se bloque sur l'iPhone en essayant d'ouvrir une vue modale particulière sur chaque cycle de construction alternatif
Le problème étrange que je suis confronté est, la première fois que je compile l'application et ouvre le 1er contrôleur de vue modale, cela fonctionne très bien et il continue à montrer le contrôleur 2ème vue. Maintenant, si j'arrête l'exécution de l'application et reconstruis & exécuter l'application, l'application se bloque (se fige avec seulement le bouton home fonctionne) quand j'ouvre la 1ère vue modale.
C'est l'erreur que je reçois:
Detected an attempt to call a symbol in system libraries that is not present on the iPhone:
_Unwind_Resume called from function -[NSArray makeObjectsPerformSelector:] in image CoreFoundation.
2010-09-23 20:19:56.526 MySuperDuperApp[6117:207] CoreAnimation: ignoring exception: [<TwitterLogin 0x7484dc0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key actionButton.
TwitterLogin est le nom du contrôleur 2 vue modale qui ne parvient pas à afficher.
J'ai essayé de mettre NSLogs pour vérifier où il plante.
//... part of the method which is called in
// viewDidAppear of first modal view controller.
- (void)login {
NSLog(@"Begin TwitterBasicVC login");
loginPopup = [[TwitterLogin alloc] init];
loginPopup.oAuth = oAuth;
loginPopup.viewDelegate = self;
loginPopup.interfaceDelegate = self;
// Show Login screen.
loginPopup.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
NSLog(@"presenting loginPopup modalView");
[self presentModalViewController:loginPopup animated:YES];
[loginPopup release];
NSLog(@"End TwitterBasicVC login");
//... viewDidLoad of second modal view controller.
- (void)viewDidLoad {
NSLog(@"Begin TwitterLogin viewDidLoad");
[super viewDidLoad];
queue = [[NSOperationQueue alloc] init];
...
La 'présentation loginPopup modalView' un message est imprimé, mais le 'Begin TwitterLogin viewDidLoad' un message n'est pas imprimé. Je ne sais pas pourquoi il se bloque entre la présentation de vue modale et viewDidLoad. Le plus étrange est que cela se produit à chaque fois que je crée/exécute l'application. (J'ai essayé de supprimer l'application et de la construire mais elle se produit toujours)
EDIT: J'ai ajouté les premières lignes de la méthode de connexion où twitterLogin est alloc-inited. J'ai aussi essayé d'appeler la méthode avec performSelector: withObject: afterDelay avec les valeurs 0.0 et 1.0 et le problème existe toujours.
EDIT 2: J'ai fait une construction propre chaque fois que j'ai essayé d'installer l'application sur l'iPhone/Simulator (après avoir supprimé l'application de l'appareil/simulateur). L'application semble fonctionner correctement avec cette méthode. Puis-je supposer qu'il est sûr de télécharger l'application sur l'App Store?
Toutes les suggestions sur la façon dont je procéder dans le débogage me aidera grandement :)
Merci
La méthode viewDidLoad doit être appelée avant la présentation du modal (c'est-à-dire lorsqu'elle est alloc'd et init'd). Pouvez-vous nous montrer où et comment vous créez votre loginPopup? – MishieMoo
Non, la méthode viewDidLoad est appelée après le chargement de la vue. La vue est d'abord chargée lorsque la propriété 'view' de UIViewController est accédée - c'est généralement quand le contrôleur de vue est poussé ou présenté de façon modale comme dans ce cas. – Michal