yo sepa ObjectiveC (igual que en C y C++) no le proporcionan con una sintaxis que permite lo que se tiene en cuenta directamente.
La solución habitual es crear dos versiones de una función. Uno que puede ser llamado directamente usando ... y otro llamado por otras funciones pasando los parámetros en forma de una lista va_.
..
[obj aMethod:@"test this %d parameter", 1337);
[obj anotherMethod:@"test that %d parameter", 666);
..
-(void) aMethod:(NSString *)a, ...
{
va_list ap;
va_start(ap, a);
[self anotherMethod:a withParameters:ap];
va_end(ap);
}
-(void) anotherMethod:(NSString *)a, ...
{
va_list ap;
va_start(ap, a);
[self anotherMethod:a withParameters:ap];
va_end(ap);
}
-(void) anotherMethod:(NSString *)a withParameters:(va_list)valist
{
NSLog([[[NSString alloc] initWithFormat:a arguments:valist] autorelease]);
}
Hay un recurso de memoria en -otro método: con Parámetros: Necesita agregar una liberación automática a la [[NSString alloc] init] –
verdadero y corregido @Bill – Till
¡Excelente! Quería pasar una lista de argumentos variables a predicateWithFormat: y después de sugerir esto, me di cuenta de que Apple ha proporcionado un predicateWithFormat: arguments: equivalent que no había notado anteriormente. – ArtOfWarfare