2011-05-22 41 views
6

我想模仿[NSArray arrayWithObjects:]的功能,它允许我以这种方式输入参数:[MyClass doSomethingWithObjects: @"str1",@"str2",nil]。假设这是可能的,我该如何声明这一点?如何使用逗号分隔多个参数来制作objc函数?

+1

做了一些搜索的,它是可能的,他们被称为可变Arguement列表或va_list的秒。自己解决这个问题,如果我第一次得到它,会在这里发布。 – 2011-05-22 14:16:10

+2

采用可变参数的方法称为[variadic methods](http://developer.apple.com/library/mac/#qa/qa1405/_index.html)。 – albertamg 2011-05-22 14:26:32

+0

[输入数组的方法]的可能重复(http://stackoverflow.com/questions/4893891/method-with-an-array-of-inputs) – Petesh 2013-10-26 09:56:27

回答

12

在这里找到解释: http://cocoawithlove.com/2009/05/variable-argument-lists-in-cocoa.html

//interface: 
- (void)foo:(NSString *)firstString, ... NS_REQUIRES_NIL_TERMINATION; 

//implementation: 
- (void)foo:(NSString *)firstArg, ... 
{ 
    va_list args; 
    va_start(args, firstArg); 
    for (NSString *arg = firstArg; arg != nil; arg = va_arg(args, NSString*)) 
    { 
     [self bar:arg]; 
    } 
    va_end(args); 
} 
相关问题