#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];