c中覆盖可变参数方法

c中覆盖可变参数方法

本文介绍了在objective-c中覆盖可变参数方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

When subclassing in objective-c, how can I forward a call to the superclass in the case of a variadic method. By what should I replace the ??? below to send all the objects I got?

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

推荐答案

你不能.要安全地传递所有可变参数,您需要一个方法来接受 va_list.

You can't. To safely pass all the variadic arguments, you need a method to accept a 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].

And use [super appendObjectsWithArguments:vl] when you override the method in the subclass.

这篇关于在objective-c中覆盖可变参数方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-21 19:11