我有以下方法定义:
- (id)initTestName: (NSString*) name andTime: (int) time, ... {
self = [super init];
if (self) {
_name = name;
_time = time;
//The method goes here
}
return self;
}
时间之后出现的每个参数都将是一个字符串。我需要在启动器内部定义一个方法,该方法采用每个传递的参数(可以是任何数字),然后创建一个String对象数组,其中每个对象都是一个String参数。 问题“如何在目标C中创建自变量方法”没有显示如何创建该循环。 如果您认为我对编码非常陌生,那么在您谴责我的问题并阻止我再次提出要求之前,我将不胜感激。
答案 0 :(得分:1)
这里有一个更详细的答案: 由于您的参数将是字符串,因此必须在方法定义中至少添加一个:
- (id)initTestName: (NSString*) name andTime: (int) time andArg:(NSString*) arg, ...
然后,我们需要使用由四个宏组成的va_List:
1)指针,该指针将用于指向变量参数列表的第一个元素。
va_list listPointer;
2)现在,我们使listPointer指向列表中的第一个参数
va_start( listPointer, arg );
3)接下来,我们将开始实际从“ va_list”本身中检索值:
NSMutableArray argsArray;
for( int i = 0; i < arg; i++ ) {
[argsArray addObject:va_arg(listPointer, NSString*);
}
4)最后,说出va_end()进行清理:
va_end(listPointer);