Помимо принятого ответа (удалите точку с запятой), обратите внимание, что:
@"Foo"
- это строка NSS. Вы даже можете отправить ему сообщение.
#define FOO @"Foo"
- это макрос препроцессора, а не константа. Это набор текста.
Хотя макросы не являются редким способом избежать повторного ввода одной и той же строки, они являются неудачным удержанием. По сути, они играют в игры, которые больше не нужны.
Для повторяющихся строк я предпочитаю:
static NSString *const Foo = @"Foo;
Часть const
этого определения гарантирует, что указатель заблокирован, так что Foo
нельзя указывать на другой объект.
Часть static
ограничивает область действия файла. Если вы хотите получить к нему доступ из других файлов, удалите static
и добавьте следующую декларацию в заголовочный файл:
extern NSString *const Foo;