Я хотел сделать что-то вроде этого:
if (viewController.mapView) [viewController.mapView someMethod];
Однако, если mapView не является переменной класса, происходит сбой. Как проверить, существует ли mapView?
Для обычных селекторов вы можете использовать respondsToSelector:. Я не уверен, будет ли это работать для доступа к свойствам нового стиля (как вы видите, в этом примере) Чтобы проверить, отвечает ли класс заданному селектору, используйте instancesRespondToSelector:.
respondsToSelector:
instancesRespondToSelector:
Кроме того, поскольку Джейсон указал здесь , вы также можете использовать NSSelectorFromString для динамической проверки во время выполнения. Э.Г.
NSSelectorFromString
if ([self respondsToSelector:NSSelectorFromString(elementName)]) { [self setValue:elementInnerText forKey:elementName]; }
Упс, нашел его:
if ([vc respondsToSelector:@selector(mapView)]) { [[vc mapView] viewWillAppear:YES]; }
Это больше, чем вы просили, но я нашел полезную категорию для общей обработки свойств NSObject:
http://www.whynotsometime.com/Why_Not_Sometime/Category_Enhancing_NSObject.html