Как создать “массив селекторов”

Я использую 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;
}
82
задан Cœur 11 October 2018 в 06:38
поделиться

3 ответа

Можно ли хранить строки и использовать NSSelectorFromString?

Из docs

NSSelectorFromString

Возвращает селектор с заданным именем.

SEL NSSelectorFromString (
   NSString *aSelectorName
);
79
ответ дан 24 November 2019 в 09:12
поделиться

Это создает объект из селектора:

[NSValue valueWithPointer:@selector(x)]
42
ответ дан 24 November 2019 в 09:12
поделиться

Почему бы просто не использовать простой массив C?

static const SEL selectors[] = {@selector(method1),
                                ....
                                @selector(method7)};

...

for (int i = 0; i < sizeof(selectors)/sizeof(selectors[0]); i++) {
  [self performSelector:selectors[i]];
  // ....
}
35
ответ дан 24 November 2019 в 09:12
поделиться