Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 宏来连接可变数量的字符串_Objective C_Ios_Macros - Fatal编程技术网

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。