Я использую iPhone SDK (3.0), и я пытаюсь создать массив селекторов для вызова множества методов в одном классе.
Очевидно, я делаю что-то не так (я думаю, что @selector не считают классом, и так наполнение их в NSArray не работает).
Я попробовал это, но это, очевидно, неправильно.
Существует ли простой способ иметь массив селекторов как это? Или существует ли лучший способ выполнить итерации через набор методов?
selectors = [NSArray arrayWithObjects:
@selector(method1),
@selector(method2),
@selector(method3),
@selector(method4),
@selector(method5),
@selector(method6),
@selector(method7), nil];
for (int i = 0; i < [selectors count]; i++) {
if ([self performSelector:[selectors objectAtIndex:i]]) // do stuff;
}
Можно ли хранить строки и использовать NSSelectorFromString?
Из docs
NSSelectorFromString
Возвращает селектор с заданным именем.
SEL NSSelectorFromString (
NSString *aSelectorName
);
Это создает объект из селектора:
[NSValue valueWithPointer:@selector(x)]
Почему бы просто не использовать простой массив C?
static const SEL selectors[] = {@selector(method1),
....
@selector(method7)};
...
for (int i = 0; i < sizeof(selectors)/sizeof(selectors[0]); i++) {
[self performSelector:selectors[i]];
// ....
}