2010-05-05 1 views
2

Je pense que c'est une question relativement simple, mais je ne sais pas exactement sait exactement ce qui se passe.Objective-C "miscasting" une chaîne/int en utilisant stringWithFormat et% d

J'ai une méthode qui essaie de construire une chaîne en utilisant la stringWithFormat de NSString

Il ressemble à ceci:

doit être un entier
NSString *line1 = [NSString stringWithFormat:@"the car is %d miles away", self.ma]; 

Dans la ligne ci-dessus « self.ma », mais dans mon cas, j'ai fait une erreur et "self.ma" pointe vers un NSString.

Donc, je comprends que la ligne devrait

NSString *line1 = [NSString stringWithFormat:@"the car is %@ miles away", self.ma]; 

mais ma question est quel est le% d dans le premier exemple faire à mon NSString?

Si j'utilise le débogueur, je peux voir que dans le cas une fois, « self.ma » égal « 32444 », mais en quelque sorte le% d convertit en 1255296.

j'aurais deviné que le conversion de 32444 => 1255296 est un type de conversion de base-numérotation (hex à dec ou quelque chose), mais cela ne semble pas être le cas. Une idée de ce que fait% d à ma chaîne?

TIA

Répondre

4

Vous donnez en fait un pointeur vers une NSString, alors quand la chaîne de format attend un entier, il interprète les octets donnés comme un int. Ce qui est donné est l'adresse où la chaîne NSString est en mémoire, et donc l'adresse mémoire de la chaîne est imprimée.

Questions connexes