试图用Swift协议来理解某些东西

时间:2017-12-02 09:13:58

标签: ios swift swift4 swift-protocols

我最近继承了一个用Swift写的非文档,意大利面和极其错误的项目。

在这里和那里整理一些东西,并在每个协议声明中遇到这个:

protocol SomeProtocol: class { ...

就像字面上的: class一样 - 这不是其他东西的占位符。

我的问题是:: class实现或宣布了什么?

之后个人从未放过: class,我通常保留继承其他协议。我删除了一对没有结果的情侣,但想到我应该在继续之前检查实际目的(如果有的话)。

致以最诚挚的问候,

弗兰克

1 个答案:

答案 0 :(得分:1)

: class表示此协议只能由类符合。

一个用例是代表。 delegate属性通常声明为weak,以避免保留周期。例如:

class MyCoolClass {
    weak var delegate: MyCoolClassDelegate?
}

如果MyCoolClassDelegate声明如此:

protocol MyCoolClassDelegate { }

然后结构也可以符合它。但结构类型无法声明weak!因此,会发生此错误:

  

'weak'可能只适用于类和类绑定协议类型,而不是'MyCoolClassDelegate'

这就是您需要将其声明为: class

的原因