Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 为什么我们使用接口而不是协议?_Objective C - Fatal编程技术网

Objective c 为什么我们使用接口而不是协议?

Objective c 为什么我们使用接口而不是协议?,objective-c,Objective C,我认为,除了名称之外,协议更适合用作类之间的“接口”。它们完成了@接口s所做的一切(公开属性和方法),而且不同的类可以实现相同的协议,这与Objective-C的动态特性是一个巨大的优势。那么为什么我们仍然使用@接口s呢?与协议相比,它们有哪些优势?(我希望从这个问题中得到更多的信息,而不是“他们在做什么时是明确的”或“作为非建设性的结束”。代理协议需要这样定义 @protocol //methods @end 它可以放在任何.h类中,只要在使用它时导入它就行了 协议不像java接口,协议是

我认为,除了名称之外,协议更适合用作类之间的“接口”。它们完成了
@接口
s所做的一切(公开属性和方法),而且不同的类可以实现相同的协议,这与Objective-C的动态特性是一个巨大的优势。那么为什么我们仍然使用
@接口
s呢?与协议相比,它们有哪些优势?(我希望从这个问题中得到更多的信息,而不是“他们在做什么时是明确的”或“作为非建设性的结束”。

代理协议需要这样定义

@protocol 
//methods
@end
它可以放在任何.h类中,只要在使用它时导入它就行了

协议不像java接口,协议是允许两个类一起工作的适配器。基本上,它说,如果您希望类A向您发送有关其状态和操作的消息,这些是它将调用其委托的方法,您必须实现这些方法。它不像一个接口,因为接口说如果你想给这个类划分子类,你必须实现这些方法,协议说如果你想和这个类交互,你必须实现这些方法,所以它有些不同


您正在询问OO类和接口(Obj-C调用接口和协议)之间的区别。这是一个非常基本的OO原则问题。你可能会得到你想要的讨论,而不是这里。@MikeWeller如果你认为这是重复的,你没有读我的问题。类==接口是什么?Obj-C接口是传统OO所称的“类”。Obj-C协议是传统OO所称的“接口”。因此,您会问OO类和接口之间的区别是什么,以及何时使用它们。想得更大(多态性)。