среда, 29 апреля 2009 г.

метод с переменным числом аргументов

Иногда необходимо создать метод, который будет принимать неизвестное число однотипных аргументов (Как например [NSString stringWithFormat]). 

Сделать это несложно.

Объявление метода:

-(void) multiArgsMeth: (int)agr0, ...;

Реализация метода:

-(void) multiArgsMeth: (id)agr0, ...{

va_list argumentList;
 va_start(argumentList, arg0); // Start scanning for arguments after firstObject.
 while (parType = va_arg(argumentList, id)) // As many times as we can get an argument of type "id"
 {
 //DO what yo want
 } 
  va_end(argumentList);
}

Вызов метода (не забудьте про nil в конце):

[self multiArgsMeth : myArg0 , myArg1, myArg2 , nil];

2 комментария:

  1. Спасибо за заметку. Думается, что в последней строке аргументы идут через зяпятую.

    ОтветитьУдалить