@ "% @ в объективе C? - PullRequest
       18

@ "% @ в объективе C?

3 голосов
/ 08 апреля 2010

Я следил за ходом и нашел строку кода, подобную @"%@ button pressed.".Я почти уверен, что релевантная часть - это% @, но это первая @ escape-последовательность или что?

В любом случае, поиск символов не работает в любой поисковой системе, поэтому я решил спросить,Я думаю, что% @ похож на {0} в C #?

Ответы [ 4 ]

9 голосов
/ 08 апреля 2010

%@ - спецификатор формата. Такие функции, как NSLog и методы, такие как +stringWithFormat:, заменят %@ описанием предоставленного аргумента объекта Objective-C или Core Foundation.

Например:

NSString *myName = @"dreamlax";

NSLog (@"My name is: %@", myName);

Это будет записывать вывод "My name is: dreamlax". См. здесь для получения дополнительной информации о спецификаторах формата.

Начальный символ @ в начале строки указывает компилятору создать статический экземпляр объекта NSString. Без этого начального символа @ компилятор создаст более простую строку в стиле C. Поскольку строки в стиле C не являются объектами Objective-C, их нельзя добавить к объектам NSArray или NSDictionary и т. Д.

2 голосов
/ 08 апреля 2010

@ «некоторая строка» означает, что это литерал NSString.

Строка, как показано в @ "CupOverflowException", является константой NSString объект. Знак @ используется часто в Objective-C, чтобы обозначить расширения языка. Строка C так же, как C и C ++, "Строка константа ", и имеет тип char *

1 голос
/ 08 апреля 2010

Я нашел эту страницу, которая может помочь - http://www.yetanotherchris.me/home/2009/6/22/objective-c-by-example-for-a-c-developer.html

Кажется, вы на правильном пути.

0 голосов
/ 08 апреля 2010

Я все еще довольно плохо знаком с языком, но похоже, что @ указывает, что передаваемая / создаваемая переменная является NSObject или директивой компилятора.

Как уже упоминалось выше, если вы используете его так:

@ "SOMETEXT"

вы создаете экземпляр объекта NSString и устанавливаете для текста этого объекта значение someText. Если вы посмотрите на хороший старый спецификатор формата в стиле C, например:

... "Это некоторый текст, и это число с плавающей точкой:% f", myFloat);

Вы создаете некоторый текст и говорите компилятору поместить строковое представление с плавающей запятой myFloat в строку. % @ - это спецификатор формата, такой же, как% f,% d,% c,% s и любой другой спецификатор формата, к которому вы привыкли. Однако, если вы используете% @ следующим образом:

... "Это некоторый текст, и это объект:% @", myObject];

То, что вы делаете, - это (я считаю) сообщение компилятору, что myObject является объектом и что вы хотите, чтобы он включал выходные данные метода описания (т. Е. [MyObject description]) в строку, которую создание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...