3

可能重复:
如何在 Objective-C 中创建可变参数方法 Objective C
中方法参数的可变数量 - 需要一个示例

以下是具有可变参数的方法的示例。

- (void)numberOfParameters:group,... {
    NSLog(@"%@",group);
}

在上述方法中,我知道要访问第一个可变参数。你能帮我访问其他人吗?

我正在浏览ObjC.pdf 并且 我正在阅读第 35 页和第 4 行

4

2 回答 2

6

看到这个几乎相同的问题

-(void)yourMethods:(id)string1, ...{

    NSMutableArray *arguments=[[NSMutableArray alloc]initWithArray:nil];
    id eachObject;
    va_list argumentList;
    if (string1) 
    {
        [arguments addObject: string1];
        va_start(argumentList, string1); 
        while ((eachObject = va_arg(argumentList, id)))    
        {
             [arguments addObject: eachObject];
        }
        va_end(argumentList);        
     }
    NSLog(@"%@",arguments);
}

最后用nil参数调用它:

[object yourMethods:arg1,arg2,arg3,nil];// object can be self
于 2012-10-09T05:42:34.113 回答
3

一:它们不被称为“组参数”(据我所知),而是可变参数。

二:C 标准库头stdarg.h为此目的提供数据类型和宏(这就是为什么我通常建议在制作The Best iPhone App Ever (TM)之前先掌握普通的 ANSI C ......)

#include <stdarg.h>

- (void)numberOfParameters:(int)num, ...
{
    int i;
    va_list args;
    va_start(args, num);

    for (i = 0; i < num; i++) {
        SomeType param = va_arg(args, SomeType);
        // do something with `param'
    }

    va_end(args);
}

这是关于这个主题的一个相当好的解释。

于 2012-10-09T05:39:48.627 回答