Отправка сообщения объекту с использованием селектора и NSSelectorFromString

Следующее будет проходить тест responseToSelector , но SIGABRT при фактическом вызове [селектор viewController] или [действие viewController: селектор] . В трассировке стека указано «NSInvalidArgumentException, причина: - [MyViewController selector]: нераспознанный селектор».

[viewController @selector (селектор)] вызовет ошибку компиляции (ошибка: ожидается ':' перед 'селектором').

Если селектор жестко запрограммирован, все работает хорошо.

Как мне отправить сообщение объекту через селектор?

-(void) notifyViewControllers:(NSString*) message
{
    if(!message) return;

    SEL selector = NSSelectorFromString(message);
    if(!selector) return;

    NSArray* viewControllers = [self.tabBarController viewControllers];
    if(!viewControllers) return;

    for (UIViewController* viewController in viewControllers)
    {
        if(!viewController) continue;

        if ([viewController respondsToSelector:selector]) {
            // [viewController selector];
            [viewController action:selector];
        }
    }
}
6
задан jww 18 May 2014 в 17:52
поделиться

0 ответов