Подтвердить что ты не робот

Переопределение вариационного метода в objective-c

При подклассов в objective-c, как я могу переадресовать вызов суперклассу в случае вариационного метода. К чему я должен заменить??? ниже, чтобы отправить все объекты, которые я получил?

- (void) appendObjects:(id) firstObject, ...
{
   [super appendObjects: ???];
}
4b9b3361

Ответ 1

Вы не можете. Чтобы безопасно передать все вариационные аргументы, вам нужен метод для принятия va_list.

В супер,

-(void)appendObjectsWithArguments:(va_list)vl {
  ...
}

-(void)appendObject:(id)firstObject, ...
  va_list vl;
  va_start(vl, firstObject);
  [self appendObjectsWithArguments:vl];
  va_end(vl);
}

И используйте [super appendObjectsWithArguments:vl] при переопределении метода в подклассе.

Ответ 3

Попробуйте следующее:

- (void) appendObjects:(id) firstObject, ...
{
   va_list args = &firstObject;
   [super appendObjects: args];
}

Если это не делает трюк, прочитайте страницы руководства по varargs.