NSString内的宏扩展

时间:2011-10-16 14:23:03

标签: objective-c macros

如何在NSString中扩展宏?我有以下代码:

#define MAX_MESSAGE_LENGTH 2000

NSString *alertTxt = @"Your message exceeded MAX_MESSAGE_LENGTH characters";

正如您可以预测的那样,“我的消息超出了MAX_MESSAGE_LENGTH个字符”,而不是“您的消息超过了2000个字符”。 有没有办法让我的MAX_MESSAGE_LENGTH在字符串中扩展?

2 个答案:

答案 0 :(得分:8)

NSStrings就像C字符串一样工作。即你可以通过将它们彼此相邻来连接字符串常量。

/* nested macro to get the value of the macro, not the macro name */
#define MACRO_VALUE_TO_STRING_( m ) #m
#define MACRO_VALUE_TO_STRING( m ) MACRO_VALUE_TO_STRING_( m )

#define MAX_MESSAGE_LENGTH 2000
NSString *alertTxt = @"Your message exceeded "
                      MACRO_VALUE_TO_STRING(MAX_MESSAGE_LENGTH)
                      " characters";

答案 1 :(得分:1)

您可以像这样使用stringWithFormat:

NSString *alertTxt = [NSString stringWithFormat:@"Your message exceeded %i characters", MAX_MESSAGE_LENGTH];

它使用相同的占位符%@%i等作为NSLog。