协议和Objective-c中的接口有什么不同?

我很困惑协议和接口之间的区别是什么? 他们似乎都在做同样的事情?

是否像C#中的抽象,你需要执行它?

Objective-C中的协议与java中的接口相同,如果这就是你的意思

在Objective C中,一个接口相当于一个C ++类的声明。 协议相当于一个Java接口。

编辑:在Objective C中,类定义分为两个组件,称为接口和实现,它允许您缩小头文件。 这与C ++类似。 Java没有一个等价的东西,因为你在类定义中实现了类的function。 C#在这方面与Java相似。

Objective-C: protocol

Java: interface

否则,没有区别。

 In Java - you implement an Interface In Swift/Objective C - you conform to a Protocol "Program to an Interface, not an Implementation" - Design Patterns 1995 

协议是一组可以由任何类实现的相关属性和方法。 它们比普通的类接口更灵活,因为它们可以让你在完全无关的类中重用一个API声明。 这使得可以在现有的类层次结构上表示水平关系。

类接口声明与该类关联的方法和属性。

相反,协议用于声明独立于任何特定类的方法和属性。