Objective-C でサブクラス化する場合、可変引数メソッドの場合、スーパークラスへの呼び出しを転送するにはどうすればよいですか。??? を何に置き換えればよいですか?取得したすべてのオブジェクトを送信するには?
- (void) appendObjects:(id) firstObject, ...
{
[super appendObjects: ???];
}
Objective-C でサブクラス化する場合、可変引数メソッドの場合、スーパークラスへの呼び出しを転送するにはどうすればよいですか。??? を何に置き換えればよいですか?取得したすべてのオブジェクトを送信するには?
- (void) appendObjects:(id) firstObject, ...
{
[super appendObjects: ???];
}
できません。すべての可変引数を安全に渡すには、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]
また、サブクラスでメソッドをオーバーライドするときに使用します。
これを試して:
- (void) appendObjects:(id) firstObject, ...
{
va_list args = &firstObject;
[super appendObjects: args];
}
それでもうまくいかない場合は、varargs のマニュアル ページを読んでください。