Подтвердить что ты не робот

В Objective C вы можете проверить, имеет ли объект определенное свойство или сообщение?

Я хотел сделать что-то вроде этого:

if (viewController.mapView) [viewController.mapView someMethod];

Однако, если mapView не является переменной класса, это сбой. Как проверить, существует ли mapView?

4b9b3361

Ответ 1

Для обычных селекторов вы можете использовать respondsToSelector:. Я не уверен, что это будет работать для доступа к свойствам нового стиля (как кажется, вы используете в этом примере). Чтобы проверить, отвечает ли класс данному селектору, используйте instancesRespondToSelector:.

Ответ 2

Кроме того, As Jason poninted out здесь, вы также можете использовать NSSelectorFromString для динамической проверки во время выполнения. Например.

if ([self respondsToSelector:NSSelectorFromString(elementName)]) 
{
    [self setValue:elementInnerText forKey:elementName];
}

Ответ 3

Ой, нашел это:

if ([vc respondsToSelector:@selector(mapView)]) {

  [[vc mapView] viewWillAppear:YES];

}