【问题标题】:Why do we use interfaces instead of protocols? [duplicate]为什么我们使用接口而不是协议? [复制]
【发布时间】:2013-04-12 12:25:20
【问题描述】:

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

【问题讨论】:

  • 您问的是 OO 类和接口(Obj-C 将其称为接口和协议)之间的区别。这是一个非常基本的 OO 原则问题。
  • 你可能会在programmers.stackexchange.com而不是这里得到你正在寻找的讨论。
  • @MikeWeller 如果您认为这是重复的,那么您没有阅读我的问题。 class==接口怎么样?
  • Obj-C 接口是传统 OO 所称的“类”。 Obj-C 协议是传统 OO 所称的“接口”。因此,您要问的是 OO 类和接口之间有什么区别以及何时使用它们。

标签: objective-c


【解决方案1】:

委托协议需要这样定义

@protocol 
//methods
@end

它可以放在任何 .h 类中,你只需要在你要使用它的时候导入它。

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

Objective C interfaces, delegates, and protocols

【讨论】:

  • 我不明白您为什么将协议链接到代表。想得更大(多态性)。
猜你喜欢
  • 2020-07-11
  • 2013-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
  • 2011-12-03
相关资源
最近更新 更多