【发布时间】:2013-07-17 01:28:55
【问题描述】:
我在一个库中有一个方法,看起来像这样:
- (id)initWithSomeObjects:(NSString *)something, ... NS_REQUIRES_NIL_TERMINATION;
我真的很想用数组而不是 var args 来调用它,因为我想传入的对象数量是可变的。
有没有什么方法,使用 performSelector 或 NSInvocation 或 objc_msgSend 或其他什么,我可以调用 var args 方法,参数来自数组?
【问题讨论】:
-
我在这里找到了一个方法,但是在xcode4+下编译不出来-cocoawithlove.com/2009/05/variable-argument-lists-in-cocoa.html
-
什么是编译错误?
-
那个程序不会做你想做的事。这是将
NSArray的内容传输到va_list。您的方法不需要va_list,它需要可变数量的参数。va_list本身就是一个类型——只是一个字节缓冲区,但它是一个参数。您的方法看起来像-(id)initWithSomeObjects:(va_list)objs比较-[NSString initWithFormat:]和-[NSString initWithFormat:arguments:]。
标签: objective-c performselector nsinvocation objc-message-send