2010-08-26 5 views
1

HI,NSNumber plantant le programme

En raison de problèmes de formatage, je convertis des flotteurs à NSNumber dans mon application iPhone. Bien qu'il génère des chaînes correctes, il plante le programme après avoir libéré l'objet.

J'ai écrit un programme simple comme application de console pour Mac OS X et le même problème se produit. Quelqu'un peut-il conseiller comment résoudre cela? Voici l'exemple de code. Tous les 3 messages sont écrits pour vous connecter et après que l'erreur se produit EXEC_BAD_ACCESS ...

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) 
{ 
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

    NSString *FormattedValueString = [[NSString alloc] init]; 
    NSString *FormattedValueString1 = [[NSString alloc] init]; 



    NSNumber *myNumber = [[NSNumber alloc] initWithDouble:100.345]; 
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
    [numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4]; 
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 

    FormattedValueString = [myNumber stringValue]; 
    FormattedValueString1 = [numberFormatter stringFromNumber:myNumber]; 

    NSLog(FormattedValueString); 
    NSLog(FormattedValueString1); 

    [FormattedValueString release]; 
    [FormattedValueString1 release]; 
    [numberFormatter release]; 
    [myNumber release]; 

    NSLog(@"Everything OK"); 

    [pool drain]; 
    return 0; 
} 

Répondre

5

FormattedValueString et FormattedValueString1 sont tous deux autoreleased et donc ne pas besoin d'être libérés manuellement. Et vous n'avez pas besoin d'allouer/init les valeurs au début de la fonction; l'affectation plus bas écrase ces valeurs.

+1

s/ne doit pas/ne doit pas/:) – walkytalky

+0

Merci pour la réponse! Je l'ai fait dans cet exemple et cela fonctionne. Mais revenir à l'application iPhone et faire la même chose ne fonctionne pas. Même problème encore. Encore merci de me pointer loin de NSNumber. C'est NSString qui a causé problème dans cet exemple d'application et il semble que la même chose est responsable des problèmes dans l'application iPhone. Si vous avez une idée à gauche, j'apprécierais, bien sûr :) – mbpro

+0

J'ai corrigé l'application iPhone aussi bien. Et je l'ai fait de la même façon que j'ai arrêté de sortir NSFormatter et NSNUmber. Ça ne peut pas être bon, n'est-ce pas? – mbpro

Questions connexes