10

在objective-c中进行子类化时,在可变参数方法的情况下,如何将调用转发到超类。我应该用什么替换??? 下面发送我得到的所有对象?

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

2 回答 2

7

你不能。要安全地传递所有可变参数,您需要一个方法来接受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]在覆盖子类中的方法时使用。

于 2010-10-21T12:17:26.607 回答
0

试试这个:

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

如果这不起作用,请阅读关于 varargs 的手册页。

于 2010-10-21T12:15:50.733 回答