2011-05-22 6 views
6

Me gustaría imitar la funcionalidad de [NSArray arrayWithObjects:] que me permite escribir argumentos de esta manera: [MyClass doSomethingWithObjects: @"str1",@"str2",nil]. Suponiendo que esto sea posible, ¿cómo puedo declarar esto?¿Cómo puedo hacer funciones objc con argumentaciones múltiples separadas por comas?

+1

Haciendo un poco de búsqueda, es posible y que se llama listas argumento variable o va_list s. Trabajando para resolver esto yo mismo, publicaré aquí si lo obtengo primero. –

+2

Los métodos que toman argumentos variables se conocen como [métodos variadic] (http://developer.apple.com/library/mac/#qa/qa1405/_index.html). – albertamg

+0

posible duplicado de [Método con una matriz de entradas] (http://stackoverflow.com/questions/4893891/method-with-an-array-of-inputs) – Petesh

Respuesta

12

encontrado que explica aquí: http://cocoawithlove.com/2009/05/variable-argument-lists-in-cocoa.html

//interface: 
- (void)foo:(NSString *)firstString, ... NS_REQUIRES_NIL_TERMINATION; 

//implementation: 
- (void)foo:(NSString *)firstArg, ... 
{ 
    va_list args; 
    va_start(args, firstArg); 
    for (NSString *arg = firstArg; arg != nil; arg = va_arg(args, NSString*)) 
    { 
     [self bar:arg]; 
    } 
    va_end(args); 
} 
Cuestiones relacionadas