Como “passar” um número variável de argumentos para o NSString + stringWithFormat:
-
07-07-2019 - |
Pergunta
Eu gostaria de escrever uma função em Objective-C, como a mostrada abaixo, que leva um número variável de argumentos, e passa esses argumentos para +stringWithFormat:
. Eu sei sobre vsnprintf
, mas isso implicaria a conversão 'formato' o NSString para C e de volta (e também significaria converter os espaços reservados de formatação dentro dela, bem ...).
O código a seguir compila, mas é claro que não se comporta como eu quero:)
NSString *estr(NSString *format, ...) {
va_list args;
va_start(args, format);
NSString *s = [NSString stringWithFormat:format, args];
va_end(args);
return s;
}
Basicamente: existe uma versão para va_list
do método +stringWithFormat:
, ou é possível escrever um
Solução
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;
}
eles não parecem ter um construtor de conveniência "stringWith ..." versão
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow