检查是否已经实现了一个可选的协议方法

有谁知道最好的方法来检查是否已经实现了一个可选的协议方法。

我试过这个:

if ([self.delegate respondsToSelector:@selector(optionalProtocolMethod:)] ) 

代表在哪里:

 id<MyProtocol> delegate; 

但是,我收到一个错误,说在函数respondsToSelector:没有在协议中find!

respondsToSelector:NSObject协议的一部分。 在MyProtocol包含NSObject应该可以解决你的问题:

 @protocol MyProtocol <NSObject> @optional -(void)optionalProtocolMethod:(id)anObject; @end 

我所做的是应用以下配方:

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

在哪里“closures”是我想要调用的方法。