iOS*_*iOS 6 cocoa protocols objective-c ios ios5
我定义了我的协议.我已经提到我的两个协议方法是可选的.在运行期间,如何确定特定方法是否可选?有什么办法可以找出答案吗?
And*_*sen 12
这应该做你想要的:
BOOL MethodInProtocolIsRequired(Protocol *protocol, SEL methodSelector)
{
struct objc_method_description methodDesc = protocol_getMethodDescription(protocol, methodSelector, YES, YES);
return methodDesc.name != NULL;
}
Run Code Online (Sandbox Code Playgroud)
请注意,我没有评论在运输代码中使用它的可行性,特别是因为您没有解释为什么要这样做.另请注意,当为协议不包含的方法指定选择器时,此函数将返回NO.这基本上是合理的(毕竟,如果一个协议不包含一个方法,它不是必需的!),但你可以通过检查协议是否包含该方法作为一个可选方法并返回一些不同的东西来为该函数增加复杂性.所有三种情况(必需,可选,非协议).
编辑:简单的测试程序:https://gist.github.com/4381753
| 归档时间: |
|
| 查看次数: |
707 次 |
| 最近记录: |