Метод Objective C с несколькими NSStrings в качестве аргумента

#iphone #objective-c #ios #cocoa-touch #cocoa

#iPhone #objective-c #iOS #cocoa-touch #cocoa

Вопрос:

Мне нужно создать метод init с несколькими NSStrings в качестве аргумента.

Предположим, что это выглядит так: ‘-(id) initWithSomething: (NSString *) things, nil;’

Как распознать количество строк и записать их в массив?

С уважением

Комментарии:

1. Вам нужно переменное количество аргументов (возможность вызова функции с любым количеством NSString ов) или просто несколько аргументов (возможность вызова ее только с предопределенным количеством NSString ов)?

Ответ №1:

Используйте метод переменных:

 //Interface
-(id) initWithSomething:(NSString*) arg1, ...;
//Implementation
-(id) initWithSomething:(NSString*) arg1, ... {
    va_list args;
    va_start(args, firstObject);
    id obj;
    for (obj = firstObject; obj != nil; obj = va_arg(args, id))
        //Do stuff with each object.
    va_end(args);
}
  

Ответ №2:

То, что вам нужно, — это переменная функция.

Ответ №3:

Базовый синтаксис objective-C выглядит следующим образом:

 -(type)methodNameTakesInput:(type)param1 andMoreInput:(type)param2
  

Таким образом, вы можете сделать

 -(id)initWithString:(NSString *)str andOtherThing:(NSObject *)obj
  

С другой стороны, вы могли бы просто передать нужный массив:

 -(id)initWithStuff:(NSArray *)arrayOfStuff
  

и заполните массив, как обычно:

 NSArray *arrayOfStuff = [NSArray arrayWithObjects:@"Strings!", @"More strings!", nil];