我想做这样的事情:
if (viewController.mapView) [viewController.mapView someMethod];
但是,如果mapView不是类变量,则会崩溃。如何检查mapView是否存在?
答案 0 :(得分:45)
对于普通选择器,您可以使用respondsToSelector:
。我不确定这是否适用于新式属性访问(因为在这个例子中你似乎使用它)。要测试类是否响应给定的选择器,请使用instancesRespondToSelector:
。
答案 1 :(得分:35)
此外,正如Jason指出here,您还可以使用NSSelectorFromString
在运行时动态检查。 E.g。
if ([self respondsToSelector:NSSelectorFromString(elementName)])
{
[self setValue:elementInnerText forKey:elementName];
}
答案 2 :(得分:30)
糟糕,发现它:
if ([vc respondsToSelector:@selector(mapView)]) {
[[vc mapView] viewWillAppear:YES];
}
答案 3 :(得分:0)
这比你要求的要多,但是我发现一个类别对于一般处理NSObject属性很有用:
http://www.whynotsometime.com/Why_Not_Sometime/Category_Enhancing_NSObject.html