Как расширить MACRO в NSString без использования конкатенации строк во время выполнения?

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

#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"

6
задан Brian Tompsett - 汤莱恩 14 July 2016 в 18:25
поделиться