在运行时判断一个类是否符合特定的协议方法?

时间:2013-04-03 06:55:14

标签: iphone ios objective-c protocols

我试图判断是否有一种方法可以确定某个类是否在运行时符合特定(可选)协议方法。有没有办法检查这个?不希望在委托类中发送对不存在的委托方法实现的调用。

2 个答案:

答案 0 :(得分:5)

 BOOL isProtocolConformed=[YourClass conformsToProtocol:@protocol(YourProtocol)];
 BOOL isSelectorResponse=[yourObject respondsToSelector:@selector(yourMethod)];
 if(isProtocolConformed && isSelectorResponse){
    //do your stuff
 }

答案 1 :(得分:2)

if ([self.delegate respondsToSelector:@selector(protocolMethod)])
{
    [self.delegate protocolMethod];
}

来自documentation

  

respondsToSelector:

     

返回一个布尔值,指示接收方是实现还是继承可以响应指定消息的方法。