首先让我解释一下我不是什么意思。我不想为协议(protocol)输入参数:
-(void)someMethod:(id<SomeProtocol>)someArgument;
我想要的是将协议(protocol)传递给方法,就像我可以将类传递给方法一样(以下是不正确的,但它有望解释我想做什么):
-(void)someMethod:(Protocol)someArgument;
然后我希望能够使用该协议(protocol)来检查一组对象是否实现了它。
最佳答案
如果您在编码时知道协议(protocol)的名称,请使用 @protocol(SomeProtocol)
获取指向该协议(protocol)的指针,类似于您使用 @selector( x)
.
除此之外,您只需引用具有类标识符 Protocol
的协议(protocol)——因此您的方法声明如下所示:
-(void)someMethod:(Protocol*)someArgument
您可以在文档中查看 NSObject conformsToProtocol:
关于objective-c - 将协议(protocol)作为方法参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7492395/