【发布时间】:2016-06-17 07:25:07
【问题描述】:
Objective-C有什么方法可以检查一个协议是否包含某个方法或某个方法是否属于某个协议?
我认为redirected question 和我的不一样。我想要的是:
[MyProtocol containsSelector:@selector(MySelector)];
或者
[MySelector isMethodOfProtocol:@protocol(MyProtocol)];
【问题讨论】:
-
@Dominic - 这似乎是一个不同的问题,一个类是否符合协议。这里的问题是协议是否包含特定方法。我只是不清楚为什么 Lizhen 需要这个,因为这让我觉得它不需要任何运行时检查。您可以在编译时确定这一点。
-
我认为检查的唯一方法是使用
respondsToSelector,并且要使用它,您需要一个协议实例(something.delegate在我的回答中)。如果您不想在respondsToSelector返回NO时保留委托,您只需要做的是delegate = nil; -
@Rob - 这是我要做的:如果选择器包含在某个协议中,它将被转发。如果没有,什么都没有发生。
-
@Dominic 你能撤消你的重定向吗?因为它们是两个不同的问题:)
-
@LizhenHu 现在您已经编辑了您的问题并使其更清晰,是的,您是正确的(我已删除评论)
标签: ios objective-c delegates protocols