2009-06-29 8 views
0

J'ai une application où j'essaye de charger récursivement des vues. J'ai donc une vue (theViewController) qui est capable d'explorer une autre vue du même type (theViewController). J'ai la récursivité fonctionne bien et les boutons de retour fonctionnent très bien. Mais j'essaie d'implémenter une fonction qui fonctionne et qui décharge la vue actuelle.UINavigationController - même viewController

Dans un autre endroit dans mon code, je donne les résultats suivants:

MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
UINavigationController *navigationController = [delegate navigationController]; 
[navigationController popViewControllerAnimated:YES]; 

Il est également à la fin d'une fonction qui fait un peu de travail pour ce point de vue (theSecondViewController), mais il charge un point de vue différent (theViewController).

Mon problème est lorsque j'utilise ce code SAME dans mon theViewController, il se décompose. Bon type de. Je pense qu'il passe à travers et éteint le contrôleur, mais quand il essaie de recharger la vue (theControllerController) à la gauche de celui-ci (au-dessus, cependant vous voulez y penser), il meurt. Une fois dans une lune bleue, il va cracher:

malloc: *** error for object 0xfb9640: double free 
*** set a breakpoint in malloc_error_break to debug 

Mais généralement, il meurt juste sans erreur (au moins je pense que c'est ce que ce genre de choses est):

GNU gdb 6.3.50-20050815 (Apple version gdb-966) (Tue Mar 10 02:43:13 UTC 2009) 
Copyright 2004 Free Software Foundation, Inc. 
GDB is free software, covered by the GNU General Public License, and you are 
welcome to change it and/or distribute copies of it under certain conditions. 
Type "show copying" to see the conditions. 
There is absolutely no warranty for GDB. Type "show warranty" for details. 
This GDB was configured as "i386-apple-darwin".sharedlibrary apply-load-rules all 
Attaching to process 15739. 

Toute aide à comprendre pourquoi il pourrait mourir en rechargeant une page serait très utile.

Mise à jour: S'il y avait une erreur avec la pointe, un problème ne se poserait-il pas plus tôt? Je crois que c'est correct. Je ne suis pas sûr où le code va après [navigationController popViewControllerAnimated: YES]; Je pensais que cela irait à viewDidLoad vue suivante. Mais j'ai un message NSLog là et il n'apparaît pas.

La navigation que je peux faire est jusqu'ici ceci:

userViewController -> theViewController -> ... -> theViewController -> theSecondViewController 

Si son droit et tout droit sorti il ​​fonctionne très bien. Le code ci-dessus fonctionne dans le second contrôleur de séquence, mais pas dans le contrôleur de contrôle.

Répondre

0

Le problème que j'avais était que je libérais NSManagedObjects quand je n'aurais pas dû être.

0

Etes-vous sûr que les pointes sont correctement configurées? Cela m'est arrivé et il s'est avéré être la plume. Probablement est, je ne me souviens pas exactement ce qui n'allait pas avec la plume. Cela fait longtemps.

Mais c'est quelque chose à vérifier. En outre, avez-vous essayé de parcourir le code et d'identifier où il s'arrête de fonctionner? Je ne suis pas sûr qu'il sera possible de donner une réponse directe basée sur ce qui est fourni ci-dessus ...

Questions connexes