Objective c 宏来连接可变数量的字符串
我写这篇文章是为了连接两个字符串:Objective c 宏来连接可变数量的字符串,objective-c,ios,macros,Objective C,Ios,Macros,我写这篇文章是为了连接两个字符串: #define Append(x, y) [NSString stringWithFormat:@"%@%@",x,y] 但是,如果我有两个以上的NSString对象呢。有没有办法修改它以适用于任意数量的字符串值 它必须是宏吗?如果您可以使用一种方法,那么以下方法如何: - (NSString*)concatenateStrings:(NSString*)string, ... { NSString* result = string; va
#define Append(x, y) [NSString stringWithFormat:@"%@%@",x,y]
但是,如果我有两个以上的NSString对象呢。有没有办法修改它以适用于任意数量的字符串值 它必须是宏吗?如果您可以使用一种方法,那么以下方法如何:
- (NSString*)concatenateStrings:(NSString*)string, ...
{
NSString* result = string;
va_list args;
va_start(args,string);
NSString* arg;
while((arg = va_arg(args,NSString*)))
result = [result stringByAppendingString:arg];
va_end(args);
return result;
}
你可以这样称呼它:
NSString* result = [self concatenateStrings:@"ABC",@"DEF",@"GHI",nil];
请记住以nil结束参数列表。是否必须使用宏完成此操作?--它可以相对轻松地作为一个函数或类别来完成。请检查:使用NSMutableString,不要将NSString附加到循环中的NSString。