如何验证委托是否响应选择器?

Osc*_*mez 25 iphone delegates selector

我知道我需要写:

 [delegate respondsToSelector:@selector(myMethod:)]
Run Code Online (Sandbox Code Playgroud)

但是编译器抱怨respontsToSelector不是协议中的一个方法,这是正确的,但是我看到很多示例代码都使用了这个,你是怎么做到的?

Gre*_*tin 58

@protocol需要实现<NSObject>,只需将协议定义更新为如下所示:

@protocol MyProtocol <NSObject>
Run Code Online (Sandbox Code Playgroud)


e.J*_*mes 9

Greg Martin有你的答案,但这里有一个快速解释为什么编译器抱怨:

respondsToSelector:方法是NSObject协议的一部分,因此当您尝试将该消息发送到删除(类型id)时,编译器无法知道您的委托可能能够处理它.