多个类中定义的相同协议

时间:2014-04-07 22:59:31

标签: ios objective-c class delegates

是否可以在不同的类中使用不同的方法定义相同的协议?

例:    在classA.h

  @protocol ME_DELEGATE <NSObject>

  @required

  -(void)doThis;

  @end

在classB.h中

@protocol ME_DELEGATE <NSObject>

@required

-(void)doThat;

@end

我做得对吗?

1 个答案:

答案 0 :(得分:1)

@Siddharthan Asokan

您可以在两个不同的类中使用相同的协议,系统将生成警告&#34;&#39; protocolName&#39;的重复协议定义。被忽略&#34; (使用默认设置)

如果将协议方法声明为@required或@optional,则可以使其正常工作。

此外,如果你想让2个不同的对象作为同一协议的代理,那么就像已经建议的那样,你需要将协议方法定义为@optional ...我已经测试过并且它有效....更棘手的部分是获取对象的引用以正确设置第二个委托

我添加了一个练习,以显示它是如何工作的....两个类中的相同协议,然后是两个不同的对象是同一协议的委托。它还显示了如何在同一个协议中将2个代表连接到同一个类。

https://github.com/eharo2/ProtocolTest

鉴于协议基于消息传递范例,通过适当的对象引用和方法实现,您可以完成您想要的任务。

我希望它有所帮助... e