2008-12-09 6 views
0

J'utilise UINavigationController pour pousser et ouvrir une vue. J'ai utilisé [[self navigationController] pushViewController:myView animated:YES] pour afficher une vue. Ensuite, je clique sur le bouton en haut à gauche pour revenir en arrière, je reçois l'erreur:Quelle méthode lors du clic sur le bouton "retour" de la barre de navigation?

*** -[NSCFDictionary superview]: unrecognized selector sent to instance 0x1451a0 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFDictionary superview]: unrecognized selector sent to instance 0x1451a0' 

Je me demande quelle méthode -popViewController appelle lorsque le bouton de retour est appelé. Si cette erreur se produit dans la première vue ou la deuxième vue qui est enfoncée.

Merci.

Répondre

3

Le bouton Précédent doit s'appeler -popViewControllerAnimated :. Cependant, il semble que vous ayez un bug de sur-release de classe ici. Fondamentalement, vous avez une vue, qui est assignée somehwere. Cette vue est juste une adresse en mémoire. À un certain point, vous relâchez cette vue jusqu'à un retainCount de 0. Lorsque cela se produit, la vue est désaffectée. À un certain moment après cela, un NSDictionary est créé avec la même adresse de mémoire que votre vue précédente, maintenant désallouée. Maintenant, quelque chose essaie d'envoyer un message à votre vue, mais ce n'est plus là, à la place, il y a un NSDictionary là-bas. Il dit quelque chose du genre: [view superview], mais affiche pointe maintenant vers un dictionnaire qui ne répond pas à la vue en superposition.

Bottom line: vérifiez vos appels retain/release/autorelease, et assurez-vous que vous ne relâchez pas trop l'un de vos affichages (ou affichez les contrôleurs, bien que cela soit moins probable).

+0

Par la suggestion de Ben, j'ai revérifié le code, il semble que j'ai un UIButton local, qui a été créé et publié dans la méthode. Après avoir modifié cette variable locale UIButton à la variable d'instance et uniquement la version dans dealloc, le problème semble disparu. Merci Ben – BlueDolphin

+0

@Ben Gottlieb: Cela m'a beaucoup aidé ... vous avez eu l'homme de point ... j'ai ajouté plus de cinq .. – Nit

Questions connexes