Многоточие (...) унаследовано от C; вы можете использовать его только в качестве последнего аргумента в вызове (и вы пропустили соответствующую запятую в вашем примере). Так что в вашем случае вы, вероятно, захотите:
+ (void)doSomethingToObjects:(id)firstObject, ...;
или, если вы хотите, чтобы счет был явным, и можете придумать, как правильно его сформулировать:
+ (void)doManyTimes:(NSInteger)numberOfTimes somethingToObjects:(id)firstObject, ...;
Затем вы можете использовать обычные методы C для работы с эллипсами, которые находятся в stdarg.h. Вот краткая документация по этим здесь , пример использования будет:
+ (void)doSomethingToObjects:(id)firstObject, ...
{
id object;
va_list argumentList;
va_start(argumentList, firstObject);
object = firstObject;
while(1)
{
if(!object) break; // we're using 'nil' as a list terminator
[self doSomethingToObject:object];
object = va_arg(argumentList, id);
}
va_end(argumentList);
}
РЕДАКТИРОВАТЬ: дополнения, в ответ на комментарии. Вы не можете передать различные вещи, переданные вам в виде многоточия, другой функции, которая принимает многоточие из-за способа, которым C обрабатывает вызов функции (которая наследуется Objective-C, хотя, очевидно, не так). Вместо этого вы, как правило, передаете va_list. Э.Г.
+ (NSString *)doThis:(SEL)selector makeStringOfThat:(NSString *)format, ...
{
// do this
[self performSelector:selector];
// make string of that...
// get the argument list
va_list argumentList;
va_start(argumentList, format);
// pass it verbatim to a suitable method provided by NSString
NSString *string = [[NSString alloc] initWithFormat:format arguments:argumentList];
// clean up
va_end(argumentList);
// and return, as per the synthetic example
return [string autorelease];
}