2011-03-02 5 views
4

J'ai une variable de chaîne qui stocke la date du sélecteur de date mais quand j'utilise sa valeur dans une autre fonction j'obtiens l'erreur comme le programme a reçu le signal: "EXC_BAD_ACCESS". Remarque: la variable est définie globalement.Programme reçu le signal: "EXC_BAD_ACCESS"

code:

- (void) changedDate: (UIDatePicker *) picker 
    { 
    if (appDelegate.dateint == 8) 
    { 
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 

[dateFormatter setDateFormat:@"dd MMM, yyyy"]; 
    datestr=[dateFormatter stringFromDate:[dptpicker date]]; 
    NSLog(@"date:%@",datestr); 
    } 
    else if(appDelegate.dateint == 9) 
    { NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 

[dateFormatter setDateFormat:@"dd MMM, yyyy"]; 
    datestr1=[dateFormatter stringFromDate:[dptpicker date]] ; 
    NSLog(@"date1:%@",datestr1); 
    } 
    } 

Répondre

5

Vous devez conserver cette chaîne. C'est la raison la plus probable.

Modifier: La seule raison pour laquelle il plante est le mauvais pointeur. Le mauvais pointeur = sur-relâche l'objet. Il suffit de lancer votre application avec des zombies activés et vous verrez l'endroit où vous faites cela. Cochez cette case http://www.markj.net/iphone-memory-debug-nszombie/

+0

@ Max je conserve déjà cette chaîne. Toute autre solution? – Harshal

+0

Postez le code sur lequel vous vous trouvez. Et la trace de la pile. – Max

+0

Et même si vous retenez la chaîne, cela ne signifie pas que vous ne la relâchez pas trop. Assurez-vous également que vous n'appelez pas de messages autorelease supplémentaires. – Max

3

En cas de plantage, affichez le backtrace.

Avant cela, utilisez "construire et analyser" et corriger les problèmes identifiés. Après cela, s'il se bloque toujours, faites un passage avec la détection de Zombie et regardez si vous relâchez quelque chose (ce qui est probable, ce code a un problème évident de sur-relâchement tel quel).

S'il est encore s'écraser, nous aurons besoin de voir plus avant ....

Questions connexes