Objective-C "неправильно передает" строку / int, используя stringWithFormat и% d - PullRequest
2 голосов
/ 05 мая 2010

Я думаю, что это относительно простой вопрос, но я не точно знаю, что происходит.

У меня есть метод, который пытается построить строку, используя строку 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];

но мой вопрос что% d в первом примере делает с моей строкой NSSt

Если я использую отладчик, я вижу, что в одном случае «self.ma» равняется «32444», но каким-то образом% d преобразует его в 1255296.

Я бы предположил, что преобразование 32444 => 1255296 - это какой-то тип преобразования базовой нумерации (шестнадцатеричное в декабрьское или что-то в этом роде), но это не так.

Есть идеи, что% d делает с моей строкой?

ТИА

1 Ответ

4 голосов
/ 05 мая 2010

Вы фактически указываете указатель на строку NSString, поэтому, когда строка формата ожидает целое число, она интерпретирует данные байты как int. Дается адрес, по которому строка NSString находится в памяти, и поэтому адрес строки памяти распечатывается.

...