2009-09-03 76 views
6

所以我试图围绕Objctive-C接口,代表和协议来进行讨论。 所以我有一个问题:Objective C接口,代表和协议

委托必须在一个单独的文件或它可以是您的类中定义的方法吗?

是一个像java接口的协议吗?如果你使用这个协议,这基本上可以让你实现方法,这是我理解它的方式。

我仍然对接口感到困惑。我很确定他们与java中的接口没有什么相似之处。也许这只是一个将在课堂上实施的变量声明。

回答

13
  • 委托的要点是在另一个对象做某事的时候被通知。例如,其中一个对象想要知道一个窗口正在关闭,因此您将其注册为窗口的委托并实施windowWillClose:方法。它将被适当地调用NSWindow。所以委托方法通常在另一个类中定义。直到某一点,它允许您扩展一个类的功能,而不需要对它进行子类化。

  • 编辑:看到丹尼尔的有关协议答案)

  • @interface是类的声明,这里的成员变量和方法被列出。它位于.h中,如果您需要使用该类,则可以导入它。方法的代码位于的.m文件中。在Java中它有所不同,.java文件可用于这两个目的。

22

委托协议需要被定义为这样的

@protocol 
//methods 
@end 

它可以放在任何.H类,你只需要导入I T每当你要使用它。

协议不像java接口,协议是允许两个类一起工作的适配器。基本上它说,如果你想让A类向你发送有关它的状态和行为的消息,这些是你将必须实现的委托给它的方法。它不像一个接口,因为一个接口说如果你想要继承这个类,你必须实现这些方法,该协议说,如果你想与这个类交互,你必须实现这些方法,所以它有点不同。

+0

+1对接口和协议之间差异的极好描述。 – 2009-09-03 20:26:51

+0

+1这样一个很好的解释。 – Iducool 2012-01-14 08:30:57

+0

当你说它不像一个接口时,你的意思是它不像一个Objective-C接口。但是如果我没有弄错,Objective-C协议与* Java *接口类似。 – 2015-04-17 08:20:16