Следующее будет проходить тест 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];
}
}
}