【问题标题】:what is that inheritance in protocol [duplicate]协议中的继承是什么[重复]
【发布时间】:2018-02-14 16:32:47
【问题描述】:

由于我不知道以下内容的名称是什么,因此我不知道如何使用适当的词来描述我的问题。无论如何,我想知道 :class 是什么?这是什么意思?它有什么作用?

protocol MyDelegate: class {
    func doTask()
}

==== 更新 ===

好的,我得到了答案,谢谢大家,但最好不要告诉它是仅限类的协议。但是 enum & struct only 协议呢,因为自然会提出这个问题,那么有没有办法定义 enum-only 和 struct-only 协议呢?

【问题讨论】:

标签: swift inheritance protocols


【解决方案1】:

class 在您的情况下意味着 classes only 可以实现您的 protocol 而不是 structs

【讨论】:

  • 只有结构的协议有同样的事情吗?
  • @Leem.fin,不,如果你声明: struct,你会得到一个例外
  • 只是给出一些上下文,enumstructtuple 是值类型。 class 是唯一的引用类型。值类型代表一个值(例如 ServerStatus),引用代表一个身份(例如 Person)。 Swift 对它们的处理方式非常不同,值类型在分配给另一个变量时被复制,而引用类型将引用传递给该实例。当您有一个协议类型的变量并且想要将其创建为弱引用时,您需要将协议定义为: class。这只是一个例子。 Apple 的 iBooks for Swift 会很有帮助。
【解决方案2】:

这意味着你可以只遵守这个协议的类,而不是结构或枚举。

【讨论】:

  • 只有结构的协议有同样的事情吗?
  • @Leem.fin,不,没有。
【解决方案3】:

这意味着只有类(而不是结构)可以实现它。

【讨论】:

  • 只有结构的协议有同样的事情吗?
  • @Leem.fin 显然不是。你有用例吗?
猜你喜欢
  • 1970-01-01
  • 2017-03-30
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
相关资源
最近更新 更多