в методе, который принимает неограниченные аргументы, как построить массив в Objective-C - PullRequest
1 голос
/ 23 апреля 2019

У меня есть следующее определение метода:

- (id)initTestName: (NSString*) name andTime: (int) time, ...  {
    self = [super init];
    if (self) {
        _name = name;
        _time = time;

       //The method goes here
    }
    return self;
}

Каждый аргумент, который приходит после времени, будет строкой.Мне нужно определить метод внутри инициатора, который принимает каждый из переданных аргументов (может быть любым числом), а затем создать массив объектов String, где каждый объект является единственным аргументом String.Вопрос «Как создать методы аргумента в Objective C» не показывает, как создать этот цикл.Я очень признателен, если вы сочтете, что я очень плохо знаком с кодированием, прежде чем вы осудите мой вопрос и не сможете больше его задавать.

1 Ответ

1 голос
/ 23 апреля 2019

Вот немного более подробный ответ: так как ваши аргументы будут Strings, вы должны добавить хотя бы один в определение метода:

- (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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...