2011-04-27 3 views
0

Je veux faire la chose suivante sur le bouton clck:"EXC_BAD_ACCESS" comment puis-je résoudre ce problème?

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex == 0) 
    { 
     if (QuestionMutableArray==nil) { 
      [self testIterator]; 
     } 
     else 
     { 
      [myMutableArray release]; 
      [myDictionary release]; 
      [self dismissModalViewControllerAnimated:YES]; 

      //[self release]; 
     } 
    } 
} 

Après retourner au contrôleur parentView avec ce code ... quand je viens à nouveau ce tableView je veux recharger mon tableView avec de nouveaux NSMutableArray. Comment puis-je vider ma collection (NSMutableArray ou dictionnaire) avec le paramètre dismissModalViewController?

Répondre

0

Ne le relâchez pas, rendez l'objet à nil.

1

Utilisez la méthode removeAllObjects.

1

L'erreur EXC_BAD_ACCESS survient lorsque vous tentez d'accéder à la mémoire qui a été libérée. Peut-être que vous essayez d'accéder au tableau ou au dictionnaire après les avoir publiés. Au lieu de cela, supprimez les objets du tableau ou du dictionnaire.

+0

- (void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) buttonIndex { if (buttonIndex == 0) { \t \t \t \t [auto dismissModalViewControllerAnimated: OUI]; \t \t \t \t \t [QuestionMutableArray removeAllObjects]; \t \t \t \t XmlManipulatorObject = [[xmlManipulator alloc] init]; \t \t QuestionMutableArray = [[XmlManipulatorObject ReadXml] retain]; \t \t [publication de self.tableView]; \t \t \t \t }} J'ai essayé comme vous l'avez dit enlever tous les objets du Array.But je ne reçois pas de nouvelles données dans le chargement de mon List.It vient d'où je suis venu back.What pourrait être la solution? –

0

EXC_BAD_ACCESS provient généralement de deux raisons:

  • cordes ne commençant pas par '@' signe et
  • gestion de la mémoire mauvaise.

Dans votre condition, je suppose que vous libérez le tableau et le dictionnaire mais que vous n'êtes pas correctement initialisé. Assurez-vous qu'ils sont correctement initialisés avant chaque utilisation, et maintenez-les jusqu'à ce que vous en ayez fini avec eux. Cela peut aussi être provoqué en jouant sur le constructeur de l'interface: je me souviens avoir connecté plusieurs fois un IBOutlet et décider que le nom n'a aucun sens et renommer la propriété. Après chaque connexion, xcode met automatiquement une instruction release dans la méthode dealloc, vous pouvez également vérifier si vous avez utilisé IB avec ce contrôleur de vue, au cas où une propriété aurait été publiée deux fois.

Questions connexes