两个代表定义相同功能的代表?

时间:2013-07-12 17:47:07

标签: iphone ios objective-c delegates dry

我有两个类 - CompletionView和PauseView - 每个类都有一个关联的委托。我已经在CompletionDelegate中有一个函数returnHome,我需要在PauseView委托中使用相同的功能。我的问题是,我是否必须编写具有重复功能的两个函数?或者一个函数可以满足两个协议吗?即,CompletionDelegate和PauseDelegate都可以要求定义returnHome吗?

2 个答案:

答案 0 :(得分:4)

您可以在外部标头中定义协议,将其导入CompletionView和PauseView,并根据该外部协议创建委托。

协议不一定需要直接与视图绑定。

请参阅this answer,但如果您的委托方法并不特别需要这些类,您可能甚至不需要定义@class和所有这些。您应该能够在returnHome之类的内容下定义GeneralUseDelegate,并在两个视图中定义/使用该委托。

@protocol GeneralUseDelegate

- (void) returnHome;

@end

没有测试,但无法想象为什么那样不起作用。

答案 1 :(得分:1)

您可以为CompletionView和PauseView创建一个公共超类,并定义协议并将委托属性放在那里