Иногда нужно сделать метод с переменным количеством аргументов, например как stringWithFormat. Список аргументов должен заканчиваться nil. Ниже вы найдете пример кода, который принимает переменное количество объектов (строк) и выводит все в консоль.


- (void) logStrings:(id) firstObject, ...
{
id eachObject;
va_list argumentList;
if (firstObject)
{
NSLog(@"%@",firstObject); // обработка первого аргумента
va_start(argumentList, firstObject);

while ((eachObject = va_arg(argumentList, id)))
NSLog(@"%@",eachObject); // обработка каждого следующего аргумента

va_end(argumentList);
}
}

Пример вызова:

[self logStrings:@"Hello",@"World",nil];

Подробнее о va_start(), va_arg(), va_end() и va_list вы можете прочитать в мануале по stdarg.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *