如何将可变数量的参数“传递”给NSString的+ stringWithFormat:

时间:2009-09-14 08:56:07

标签: iphone objective-c cocoa nsstring variadic-functions

我想在Objective-C中编写一个函数,例如下面的函数,它接受可变数量的参数,并将这些参数传递给+stringWithFormat:。我知道vsnprintf,但这意味着将NSString'格式'转换为C并返回(并且还意味着转换其中的格式化占位符......)。

下面的代码编译,但当然不符合我的要求:)

NSString *estr(NSString *format, ...) {
    va_list args;
    va_start(args, format);
    NSString *s = [NSString stringWithFormat:format, args];
    va_end(args);
    return s;
}

基本上:是va_list - +stringWithFormat:方法的友好版本,还是可以写一个?

1 个答案:

答案 0 :(得分:47)

initWithFormat:arguments:

NSString *estr(NSString *format, ...) {
    va_list args;
    va_start(args, format);
    NSString *s = [[[NSString alloc] initWithFormat:format arguments:args] autorelease];
    va_end(args);
    return s;
}

他们似乎没有便利构造函数“stringWith ...”版本