2009-10-26 5 views
0

Je reçois un message EXC_BAD_ACCESS lorsque je présente un autre contrôleur en mode Modal. Apparemment, quand j'arrive au viewDidLoad de ce contrôleur, certaines variables sont "invalides". Cependant, si j'attends comme 20 secondes, alors le contrôleur se chargera bien.En attente de la gestion de la mémoire de l'iPhone

Je suis nouveau sur iPhone. Désolé pour une question de débutant.

+0

Lorsque vous dites "get" à viewDidLoad du contrôleur, voulez-vous dire que la méthode est appelée automatiquement par l'application ou que vous l'appelez explicitement? Quel objet a l'EXC_BAD_ACCESS? Du code serait utile. – TechZen

+0

Hi - J'ai essayé d'utiliser une variable globale NSString dans un contrôleur appelé Root. J'ai créé/configuré un autre contrôleur appelé View dans Root.m. J'affecte une valeur à NSString à l'intérieur de Root, présent View, puis j'essaie d'accéder à NSString lorsque View charge dans viewDidLoad. J'ai mis en place des points d'arrêt pour vérifier la valeur de NSString avant de quitter la racine et quand j'entre dans View. Parfois, il a la même valeur, parfois est dit invalide. Plus à venir dans le prochain commentaire ... – YVR1985

+0

Je pense que je l'ai résolu en déplaçant tout mon traitement à View. Il semble que NSString pourrait sortir des limites en étant trop rempli. Avez-vous couru à travers cela? En outre, j'ai remarqué que sur le simulateur et sur le périphérique, les résultats sont également incohérents. Merci pour toute contribution. – YVR1985

Répondre

0

EXC_BAD_ACCESS peut souvent être suivi en exécutant simplement le débogueur. Ne définissez pas de points d'arrêt, exécutez simplement le débogage (Command-Y) et faites ce que vous faites normalement pour provoquer le plantage de l'application. Le débogueur s'arrêtera à l'endroit du code où l'accident se produit. Vous pouvez ensuite regarder la liste des threads dans le débogueur (en haut à gauche) et voir la dernière ligne de votre code qui était valide. Les lignes qui sont dans une police grise sont des lignes du code interne. Les lignes dans une police noire complète sont votre code. Cliquez sur le dernier (le plus haut dans la pile) de vos lignes de code et vous pouvez voir où il échoue. Vous pouvez ensuite passer votre souris sur les variables de cette ligne pour trouver celle qui n'a pas été initialisée. Cela devrait vous donner une idée de ce qui se passe.

+0

Merci Matt. Je vais essayer cela et vous laisser savoir ce que je trouve. Question rapide - il semble que l'exécution de mon application dans le simulateur par rapport à un périphérique génère des incohérences. Avez-vous des idées? Merci. – YVR1985

+0

J'ai vu des incohérences entre les deux avant moi, mais vous devrez préciser quelles incohérences vous voyez spécifiquement. –

+0

Bonjour Matt - par exemple, l'application n'aurait pas de problème avec le problème de NSString dans le simulateur comme sur le vrai téléphone. J'ai une application qui suit les scores, et dans le simulateur, je peux entrer les données complètes que je demande - remplir 5 tableaux, environ 10 variables, puis les stocker dans les données de base. Pas de problème sur le simulateur mais s'arrête avant même d'avoir atteint la moitié du vrai périphérique. Wierd. Je vais essayer votre suggestion sur les deux à nouveau voir où la faute réside. À la fin de la journée, je l'ai écrit pour que je sois capable de le comprendre. :-) – YVR1985