Как расширить MACRO в NSString без использования конкатенации строк во время выполнения? - PullRequest
6 голосов
/ 13 января 2012

Я определил макрос MYMACRO. Примечание: значение не является допустимой строкой NSS.

#define MYMACRO is

Макрос используется внутри объявления строки NSString

@"This MYMACRO fun"

Однако препроцессор не раскрывает макрос. Предварительно обработанный результат

@"This MYMACRO fun"

Лучшее решение, которое я нашел для расширения макроса:

#define MYMACRO @"is"
@"This "MYMACRO@" fun"

Макрос раскрывается, как показано ниже, что является допустимым синтаксисом Objective C:

@"This "@"is"@" fun"

Однако для этого требуется 2 сцепления во время выполнения.

Итак, мой вопрос как вставить макрос в строку NSString без использования конкатенации строк во время выполнения?

В идеале я хотел бы, чтобы среда выполнения выполнялась @"This is fun", а не @"This "@"is"@" fun"

Ответы [ 2 ]

6 голосов
/ 13 января 2012

Я вполне уверен, что у вас уже есть конкатенация во время компиляции, а не во время выполнения.

0 голосов
/ 13 января 2012
#define MYMACRO @"is"
[NSString stringWithFormat:@"This %@ fun",MYMACRO]
...