это действительно вопрос новичка, но он поможет мне лучше понять, как работает Objective-c. Я использовал UIActionSheet в приложении для iOS. Глядя на документацию, это соответствующий метод init:
- (id)initWithTitle:(NSString *)title delegate:(id < UIActionSheetDelegate >)delegate cancelButtonTitle:(NSString *)cancelButtonTitle destructiveButtonTitle:(NSString *)destructiveButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ...
Где otherButtonTitles называется разделенным запятыми списком NSString. На мой взгляд, это соответствует NSArray, поэтому, пытаясь спровоцировать сбой, я попытался:
NSArray *buttons = [NSArray arrayWithObjects:@"B1",@"B2",nil];
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Actions" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Delete" otherButtonTitles:buttons];
А потом очевидно, что приложение зависало из-за кнопок NSArray.
Это звучит так же, как Java Varargs, где в классе вы можете иметь что-то вроде:
public void myMethod(String... param) {...};
Официальный вызов этого метода:
myClass.myMethod("x");
myClass.myMethod("x","Y");
У меня есть много методов в моих приложениях для iOS, которые использовали NSArray:
[myClass myMethod:[NSArray arrayWithObjects:....]];
И мне было бы очень удобно избегать alloc NSArray, а скорее передавать разделенный запятыми список NSString. Как я могу это сделать ? Я имею в виду, с точки зрения myMethod, какой тип параметра принимается и как его следует учитывать? Например, как я могу перебрать через NSString ???
спасибо