2009-10-15 12 views
1

je code suivant qui est appelé à plusieurs reprises:iPhone problème étrange avec NSString

 
NSString *Final = [ NSString stringWithFormat:@"%@%@%@%@.%@%@", str1, str2, str3, str4, str5, str6]; 

Chaque fois un moment chaîne finale est fixée à zéro, alors que str1 ... à STR6 sont parfaitement valides chaîne (j'ai vérifié dans le débogueur)!

J'ai eu ce code à l'origine, mais chaque fois un certain temps final était également un pointeur non valide

 
NSString *Final = [ [NSString alloc] initWithFormat:@"%@%@%@%@.%@%@", str1, str2, str3, str4, str5, str6]; 
... 
[Final release]; 

Je suis tout à fait perplexe. Qu'est-ce que cela pourrait être?

Fondamentalement, je collecte des valeurs à partir de diverses zones d'édition, forme une chaîne à partir de ces valeurs et éventuellement le convertir en nombre.

Merci!

+2

Vous avez posé 15 questions mais accepté aucune réponse. –

Répondre

-2

c'est une alternative maladroite. Si votre ligne ne fonctionne pas, essayez ceci:

NSString * finalstr = str1; 
finalstr = [finalstr stringByAppendingString:str2]; 
finalstr = [finalstr stringByAppendingString:str3]; 
finalstr = [finalstr stringByAppendingString:str4]; 
finalstr = [finalstr stringByAppendingString:str5]; 
finalstr = [finalstr stringByAppendingString:str6]; 

par la voie, je l'habitude d'éviter ces mots réservés couramment utilisés comme mes noms de variables (bien final ne soit pas un mot réservé par c objectif).

+3

Downvote: solution de contournement non équivalente. Plus: éviter les insectes au lieu de trouver est une mauvaise idée. –

+0

D'accord et merci pour le commentaire. D'autre part, en se référant à la question, semble la ligne n'a aucun problème du tout. Donc, Leon, pourriez-vous poster le contenu de str1 - str6 pour que nous le référencions? – Raptor

+0

J'ai fini par réécrire du code en utilisant des pointeurs en C simples (que j'ai utilisés depuis plus de 15 ans). J'ai une chaîne de caractères [7]. Je remplis alors chaque char [i] avec le chiffre respectif, mets la valeur NULL à la dernière valeur et crée et puis appelle decimalNumberFromString (ou atof ou atoi) – leon