Иногда необходимо создать метод, который будет принимать неизвестное число однотипных аргументов (Как например [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];
Спасибо за заметку. Думается, что в последней строке аргументы идут через зяпятую.
ОтветитьУдалитьspyromus,
ОтветитьУдалитьспасибо, исправил ))