Параметры переменной длины в Objective-C

Как я могу создать метод класса с параметрами переменной длины в Objective-C?

Например, такой метод, как -arrayWithObjects:

NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];

person Mustafa    schedule 28.03.2011    source источник


Ответы (3)


Вам нужна вариационная функция. Эти функции принимают произвольное количество аргументов, например NSLog, [NSArray arrayWithObjects:...] и т. д.

См. этот учебник:

http://www.numbergrinder.com/node/35

Скопировано из моего ответа здесь: Obj-C, пытаюсь написать альтернативу NSLog, но хочу, чтобы моя функция конкатенировала как NSLog?

person Evan Mulawski    schedule 28.03.2011

Взгляните на varargs, например: Технические вопросы и ответы Apple QA1405 . Не имеет значения, является ли метод методом класса или нет.

person goetz    schedule 28.03.2011

Методы, которые принимают переменные аргументы, известны как методы с переменным числом аргументов. "..." – это переменный аргумент.
Например, объявление вашей функции будет таким: - (void)specialWithX:(NSInteger)x y:(NSInteger)y, ...;

Для получения дополнительной информации см. списки переменных аргументов в Cocoa

person Black Frog    schedule 28.03.2011