Что это за синтаксис Objective C, многоточие в стиле эллипса? "..." - PullRequest
16 голосов
/ 02 апреля 2009

Я заметил это в исходном коде Three20 Джо Хьюитта, и никогда раньше не видел этот синтаксис в Objective-C. Даже не уверен, как ссылаться на него в соответствующем поиске Google.

Из TTTableViewDataSource:

+ (TTSectionedDataSource*)dataSourceWithObjects:(id)object,... {

"..." - это то, что меня здесь отталкивает. Я предполагаю, что это форма перечисления, где может быть предоставлено переменное количество аргументов. Если это так, какое официальное название у этого оператора и где я могу сослаться на документацию для него?

Спасибо, любезно.

1 Ответ

40 голосов
/ 02 апреля 2009

Это метод с переменным значением, то есть он принимает переменное количество аргументов. На этой странице есть хорошая демонстрация того, как ее использовать:

#import <Cocoa/Cocoa.h>

@interface NSMutableArray (variadicMethodExample)

- (void) appendObjects:(id) firstObject, ...;  // This method takes a nil-terminated list of objects.

@end

@implementation NSMutableArray (variadicMethodExample)

- (void) appendObjects:(id) firstObject, ...
{
id eachObject;
va_list argumentList;
if (firstObject)                      // The first argument isn't part of the varargs list,
  {                                   // so we'll handle it separately.
  [self addObject: firstObject];
  va_start(argumentList, firstObject);          // Start scanning for arguments after firstObject.
  while (eachObject = va_arg(argumentList, id)) // As many times as we can get an argument of type "id"
    [self addObject: eachObject];               // that isn't nil, add it to self's contents.
  va_end(argumentList);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...