所以我试图围绕Objctive-C接口,代表和协议来进行讨论。 所以我有一个问题:Objective C接口,代表和协议
委托必须在一个单独的文件或它可以是您的类中定义的方法吗?
是一个像java接口的协议吗?如果你使用这个协议,这基本上可以让你实现方法,这是我理解它的方式。
我仍然对接口感到困惑。我很确定他们与java中的接口没有什么相似之处。也许这只是一个将在课堂上实施的变量声明。
所以我试图围绕Objctive-C接口,代表和协议来进行讨论。 所以我有一个问题:Objective C接口,代表和协议
委托必须在一个单独的文件或它可以是您的类中定义的方法吗?
是一个像java接口的协议吗?如果你使用这个协议,这基本上可以让你实现方法,这是我理解它的方式。
我仍然对接口感到困惑。我很确定他们与java中的接口没有什么相似之处。也许这只是一个将在课堂上实施的变量声明。
委托的要点是在另一个对象做某事的时候被通知。例如,其中一个对象想要知道一个窗口正在关闭,因此您将其注册为窗口的委托并实施windowWillClose:
方法。它将被适当地调用NSWindow
。所以委托方法通常在另一个类中定义。直到某一点,它允许您扩展一个类的功能,而不需要对它进行子类化。
(编辑:看到丹尼尔的有关协议答案)
的@interface
是类的声明,这里的成员变量和方法被列出。它位于.h
中,如果您需要使用该类,则可以导入它。方法的代码位于的.m
文件中。在Java中它有所不同,.java
文件可用于这两个目的。
委托协议需要被定义为这样的
@protocol
//methods
@end
它可以放在任何.H类,你只需要导入I T每当你要使用它。
协议不像java接口,协议是允许两个类一起工作的适配器。基本上它说,如果你想让A类向你发送有关它的状态和行为的消息,这些是你将必须实现的委托给它的方法。它不像一个接口,因为一个接口说如果你想要继承这个类,你必须实现这些方法,该协议说,如果你想与这个类交互,你必须实现这些方法,所以它有点不同。
我建议检查出:
The Objective-C 2.0 Programming Language
它应该有答案,大部分的有关协议和接口的问题。
至于代表,他们可以是一个新的对象或在其中创建的东西需要一个委托对象。文件与它没有任何关系。
+1对接口和协议之间差异的极好描述。 – 2009-09-03 20:26:51
+1这样一个很好的解释。 – Iducool 2012-01-14 08:30:57
当你说它不像一个接口时,你的意思是它不像一个Objective-C接口。但是如果我没有弄错,Objective-C协议与* Java *接口类似。 – 2015-04-17 08:20:16