5

来自Objective C Programming Guide(在“Object Messaging”部分下),

采用可变数量参数的方法也是可能的,尽管它们很少见。额外的参数在方法名称的末尾用逗号分隔。(与冒号不同,逗号不被视为名称的一部分。)在以下示例中,虚构的 makeGroup: 方法传递了一个必需参数(组)和三个可选参数:

[接收者makeGroup:group, memberOne, memberTwo, memberThree];

我试图创建这样一个方法,它显示一个错误

“预期的 ';' 方法原型之后"

当我尝试在我的接口文件(.h 文件)中声明以下函数时。

- (void) printMyClass: (int) x, (int) y, (int) z;

谁能给出示例来创建这样的方法makeGroup

谢谢

4

2 回答 2

16

你可以看到这个链接

在你的头文件中定义最后三个点的方法

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

在你的实现文件中写下方法体

-(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);
}

现在调用你的方法

[self yourMethods:@"ab",@"cd",@"ef",@"gf",nil];

注意:记得在最后加上nil

于 2012-09-17T07:32:14.023 回答
0

声明具有可变数量参数的方法的语法如下:

- (void) printMyClass: (int) x, ...;

一个参数始终是所需的最小值,其他参数可以通过va_arg函数组访问。有关确切的详细信息,请参阅本教程

于 2012-09-17T07:24:02.080 回答