如何扩展NSString内部的宏?我有以下代码:NSString内部的宏扩展
#define MAX_MESSAGE_LENGTH 2000
NSString *alertTxt = @"Your message exceeded MAX_MESSAGE_LENGTH characters";
正如你可以预测我收到“您的邮件超过MAX_MESSAGE_LENGTH字符”,而不是“您的邮件超过2000个字符”。 有没有办法让我的MAX_MESSAGE_LENGTH在字符串中展开?
如何扩展NSString内部的宏?我有以下代码:NSString内部的宏扩展
#define MAX_MESSAGE_LENGTH 2000
NSString *alertTxt = @"Your message exceeded MAX_MESSAGE_LENGTH characters";
正如你可以预测我收到“您的邮件超过MAX_MESSAGE_LENGTH字符”,而不是“您的邮件超过2000个字符”。 有没有办法让我的MAX_MESSAGE_LENGTH在字符串中展开?
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";
您可以使用stringWithFormat:
这样的:
NSString *alertTxt = [NSString stringWithFormat:@"Your message exceeded %i characters", MAX_MESSAGE_LENGTH];
中采用相同的占位符%@
,%i
等为NSLog的。
你假设一个宏数值为 –
有很多可能会起作用的C模式宏编码技术,但是Joe的方法更直接,更不易出错。 –
没错。我只是想知道宏观扩张。 – dmitry747