Как «передать» переменное количество аргументов в NSString's + stringWithFormat: - PullRequest
31 голосов
/ 14 сентября 2009

Я хотел бы написать функцию в 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 Ответ

47 голосов
/ 14 сентября 2009

initWithFormat: аргументы:

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 ..." версия

...