在Objective C中,你能检查一个对象是否有特定的属性或消息吗?
我可以做这样的事情:
if (viewController.mapView) [viewController.mapView someMethod];
但是,如果mapView不是一个类variables,则会崩溃。 如何检查mapView是否存在?
对于普通的select器,你可以使用respondsToSelector:
我不确定这是否适用于新样式的财产访问(因为它看起来你在这个例子中使用)。 为了testing一个类是否响应给定的select器,使用instancesRespondToSelector:
另外,正如Jason在这里指出的那样,您还可以使用NSSelectorFromString
在运行时dynamic检查。 例如
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