OBJC_MSGSEND Ошибка в строке NSStringWithFormat - PullRequest
0 голосов
/ 12 ноября 2009

У меня есть кнопка в тестовом приложении iPhone0, которая открывает вопросы StackOverflow на основе их GET ID в URL. При каждом нажатии кнопки страница должна перезагружаться до следующего вопроса.

Я сохраняю счет GET ID через int count, изначально установленный на 1 и увеличиваемый при каждом нажатии кнопки.

Жесткое кодирование URL с использованием: NSString *urlAddress=[NSString stringWithFormat:@"http://stackoverflow.com/questions/1"];

работает, но, очевидно, не позволяет использовать счетчик. Когда я пытаюсь реализовать счетчик с:

NSString *urlAddress =[NSString stringWithFormat: @"http://stackoverflow.com/questions/%@", count];

Программа завершается с ошибкой OBJC_MSGSEND. Почему эта строка кода не работает?

* Я отладил, и это первая строка, которая вызывает указанную ошибку.

Спасибо.

1 Ответ

4 голосов
/ 12 ноября 2009

count не является объектом. Вам нужно использовать %d, а не %@. Использование %@ в качестве спецификатора формата означает «отправить метод description объекту, который я указал в качестве аргумента». Поскольку ваша переменная count на самом деле не является объектом, вы не можете отправлять ей сообщения.

Ваш код (сокращенный, чтобы показать пример лучше), выглядит следующим образом:

NSString *s = [NSString stringWithFormat:@"something/%@", count];

Что (в значительной степени) эквивалентно этому:

NSString *s = [NSString stringWithFormat:@"something/%@", [count description]];

Как вы можете себе представить, среда выполнения не может сделать из этого ни головы, ни хвоста (в конце концов, count - это int). Использование этого формата будет работать:

NSString *s = [NSString stringWithFormat:@"something/%d", count];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...