objective-c - 将协议(protocol)作为方法参数传递

标签 objective-c methods protocols arguments

首先让我解释一下我不是什么意思。我不想为协议(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:

的示例

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/clm/NSObject/conformsToProtocol :

关于objective-c - 将协议(protocol)作为方法参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7492395/

相关文章:

iphone - iOS - 代码仅在插入断点时才有效

c++ - Unsigned Long Long 超出范围?

c - 将非尾递归函数转换为迭代函数时处理其尾部部分

objective-c - 继承 objective-c

ios - 为什么我的简单 swift 委托(delegate)和协议(protocol)设置不起作用?

objective-c - 查找当前事件的 Finder 窗口/文件夹

objective-c - 在 NSTextView 中填充——没有自定义绘图可能吗?

ios - Swift,为什么类方法不需要闭包列表

ios - 快速、objective-c 协议(protocol)实现

swift - 在 Swift 中,遵守协议(protocol)的对象是否绝对需要委托(delegate)变量才能使用协议(protocol)?