用于连接可变数量的字符串的宏

时间:2012-10-25 19:53:25

标签: objective-c ios macros

我写这个连接两个字符串:

#define Append(x, y) [NSString stringWithFormat:@"%@%@",x,y]

但是,如果我有两个以上的NSString对象,该怎么办?有没有办法修改它以适用于任意数量的字符串值?

1 个答案:

答案 0 :(得分:3)

它必须是一个宏吗?如果你可以使用一种方法,那么:

- (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终止参数列表。