我认为这是一个相对简单的问题,但我并不确切知道发生了什么。
我有一个尝试使用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
答案 0 :(得分:4)
您实际上是在给它一个指向NSString的指针,所以当格式字符串需要一个整数时,它会将给定的字节解释为int。给出的是NSString在内存中的地址,因此打印出字符串的内存地址。