3
我在一个库中的方法,看起来像这样的objc方法:如何将数组传递给需要变参(如...')
- (id)initWithSomeObjects:(NSString *)something, ... NS_REQUIRES_NIL_TERMINATION;
我真的很喜欢叫它用一个数组而不是var args,因为我想要传递的对象的数量是可以改变的。
有没有办法,使用performSelector或NSInvocation或objc_msgSend或其他什么,我可以调用var args方法,参数来自数组?
我在这里找到了一种方法,但它不能在xcode4 +下编译 - http://www.cocoawithlove.com/2009/05/variable-argument-lists-in-cocoa.html – Chris
什么是编译错误? – Wain
该程序不会做你想做的。这是将'NSArray'的内容传递给'va_list'。你的方法不需要'va_list',它需要可变数目的参数。一个'va_list'是它自己的类型 - 只是一个字节缓冲区,但它是一个单独的参数。你的方法看起来像' - (id)initWithSomeObjects:(va_list)objs'比较' - [NSString initWithFormat:]'和' - [NSString initWithFormat:arguments:]'。 –