2010-11-07 27 views
0

Je travaille sur une application qui utilise un contrôleur de navigation. Quand je construis, je ne reçois aucune erreur ou avertissement. J'ai défini une méthode myMethod dans le fichier FirstViewController.m, puis dans viewDidLoad j'appelle la méthode avec [self myMethod];. Lorsque j'ai créé et exécuté à partir de la console, je n'ai rien reçu. Donc, je mets NSLog() déclarations comme ceci:Pourquoi l'application plante-t-elle dans un simulateur d'iPhone? Comment puis-je réparer cela?

-(void) viewDidLoad { 
NSLog(@"Entering viewDidLoad"); 
[self myMethod]; 
NSLog(@"Called myMethod"); 
[super viewDidLoad]; 
} 

La console ne retourne jamais la deuxième déclaration NSLog, me porte à croire que les accidents d'applications tout en appelant la méthode.

Je l'ai essayé avec le jeu de simulation iOS 4.0.1 et iOS 4.1. Je construis contre iOS 4.1 SDK. J'apprécie vraiment toute aide que vous pouvez offrir.

Mise à jour: J'ai exécuté le débogueur, qui semble montrer le problème étant dans myMethod. Je ne fais que quelques lignes de code dans cette méthode avant de recevoir "EXC_BAD_ACCESS". Les lignes de code sont les suivantes:

-(void)myMethod { 
NSMutableArray *someStuff; 
NSMutableArray *someMoreStuff; 

stuffSections=[[NSMutableArray alloc] initWithObjects:@"Some Stuff",@"Some More Stuff",nil]; 

someStuff=[[NSMutableArray alloc] init]; 
someMoreStuff=[[NSMutableArray alloc] init]; 

[someStuff addObject:[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"Item Name",@"name",@"Item Picture.png",@"picture",@"http://theurl.net/",@"url",@"1",@"itemCode",nil]]; 

Mais il semble que je ne peux pas aller au-delà de cette première tentative d'ajouter quelque chose au tableau someStuff.

+0

Définissez un point d'arrêt et utilisez le débogueur. Et effectivement exécuté avec le débogueur attaché (pas seulement la cible de débogage). – Eiko

+0

Ok, j'ai placé le point d'arrêt immédiatement après [self myMethod]. Dans la console du débogueur, il est indiqué "Signal reçu du programme: 'EXC_BAD_ACCESS'." Je suis nouveau à ceci, cependant, et n'ai aucune idée de ce que ces résultats dans la fenêtre de débogueur signifient ... – scojac

+0

Essayez de courir avec la commande + Y au lieu de la commande + R. Cela va démarrer avec le débogueur attaché. Lorsque votre programme tombe en panne, l'exécution s'arrêtera à la ligne fautive vous donnant une chance de découvrir où il se trouve et d'inspecter les valeurs de vos variables à ce moment. – Tommy

Répondre

0

Il semblerait qu'il y ait un problème dans "myMethod". Si je devais deviner, je dirais que vous essayez de référencer un objet qui a été libéré automatiquement et non conservé.

0

Il vous manque l'alloc lors de l'initialisation de someStuff et someMoreStuff. Il doit être

someStuff = [[NSMutableArray alloc] init]; 
    someMoreStuff = [[NSMutableArray alloc] init]; 
+0

Je l'ai eu dans le code, mais je n'ai pas réussi à le saisir ici. Je pense que je vais commencer à copier-coller. Désolé pour ça. – scojac

0

Avez-vous coché les deux MutableArrays? Ont-ils été attribués avec succès? Vous obtenez "EXC_BAD_ACCESS" lorsque l'application est dans un état endommagé qui est généralement dû à un problème de gestion de la mémoire . Je suppose que les tableaux ne sont pas alloués.

Essayez d'allouer de cette manière.

NSMutableArray * someStuff = [[NSMutableArray alloc]initWithCapacity:3]; 
NSMutableArray * someMoreStuff = [[NSMutableArray alloc]initWithCapacity:3]; 

ajouter un point d'arrêt, il y a contrôle dans la zone de mise au point et confirmer si elles sont attribuées avec succès. S'il y a une mémoire dans chacun de ces tableaux, ils sont alloués.