在采用无限制参数的方法中,如何在Objective-C中构造数组

时间:2019-04-22 23:35:46

标签: objective-c

我有以下方法定义:

- (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中创建自变量方法”没有显示如何创建该循环。 如果您认为我对编码非常陌生,那么在您谴责我的问题并阻止我再次提出要求之前,我将不胜感激。

1 个答案:

答案 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);