Objective-C使用stringWithFormat和%d“miscasting”一个字符串/ int

时间:2010-05-05 02:38:00

标签: iphone objective-c nsstring stringwithformat

我认为这是一个相对简单的问题,但我并不确切知道发生了什么。

我有一个尝试使用NSString的stringWithFormat

构建字符串的方法

看起来像这样:

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

在上面的行中,“self.ma”应该是一个int,但在我的情况下,我犯了一个错误,“self.ma”实际上指向一个NSString。

所以,我明白该行应该是

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

但我的问题是第一个示例中对我的NSString做的%d是什么?

如果我使用调试器,我可以看到,在一次情况下,“self.ma”等于“32444”,但不知何故,%d将其转换为1255296。

我猜想32444转换=> 1255296是某种类型的基数转换(十六进制到十进制或其他),但似乎并非如此。

知道%d对我的字符串做了什么吗?

TIA

1 个答案:

答案 0 :(得分:4)

您实际上是在给它一个指向NSString的指针,所以当格式字符串需要一个整数时,它会将给定的字节解释为int。给出的是NSString在内存中的地址,因此打印出字符串的内存地址。