2010-05-05 59 views
2

我認爲這是一個相對簡單的問題,但我不知道知道發生了什麼。Objective-C「miscasting」使用stringWithFormat和%d的字符串/ int

我試圖使用的NSString的stringWithFormat

它看起來像這樣建立一個字符串的方法:

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

在上述行「self.ma」應該是一個整數,但在我情況下,我犯了一個錯誤,「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

回答

4

你實際上是給它一個指向一個NSString,所以當格式字符串期望一個整數,它解釋給定的字節作爲一個int。給出的是NSString在內存中的地址,因此打印出字符串的內存地址。

相關問題