Иногда нужно сделать метод с переменным количеством аргументов, например как 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.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: