可能重复:
如何在 Objective-C 中创建可变参数方法 Objective C
中方法参数的可变数量 - 需要一个示例
以下是具有可变参数的方法的示例。
- (void)numberOfParameters:group,... {
NSLog(@"%@",group);
}
在上述方法中,我知道要访问第一个可变参数。你能帮我访问其他人吗?
我正在浏览ObjC.pdf 并且 我正在阅读第 35 页和第 4 行
可能重复:
如何在 Objective-C 中创建可变参数方法 Objective C
中方法参数的可变数量 - 需要一个示例
以下是具有可变参数的方法的示例。
- (void)numberOfParameters:group,... {
NSLog(@"%@",group);
}
在上述方法中,我知道要访问第一个可变参数。你能帮我访问其他人吗?
我正在浏览ObjC.pdf 并且 我正在阅读第 35 页和第 4 行
看到这个几乎相同的问题
-(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
一:它们不被称为“组参数”(据我所知),而是可变参数。
二: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);
}
这是关于这个主题的一个相当好的解释。