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 に答える