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

Trying to understand something with Swift protocols

我最近继承了一个用 Swift.

编写的完全没有文档记录的、意大利面条式的和极其错误的项目

我正在整理一些东西,并且在每一个协议声明中都遇到了这个问题:

protocol SomeProtocol: class { ...

字面上的 : class - 这不是其他内容的占位符。

我的问题是:: class 实现或声明了什么?

个人从来没有把 : class 放在后面,我通常将其保留用于从其他协议继承。我删除了几个没有结果,但我想我应该在继续之前检查实际目的(如果有的话)。

此致,

弗兰基

: class表示这个协议只能被class.

遵守

其中一个用例是委托。 delegate 属性通常声明为 weak 以避免循环保留。例如:

class MyCoolClass {
    weak var delegate: MyCoolClassDelegate?
}

如果MyCoolClassDelegate这样声明:

protocol MyCoolClassDelegate { }

那么结构也可以符合它。但是不能声明结构类型weak!因此,出现这个错误:

'weak' may only be applied to class and class-bound protocol types, not 'MyCoolClassDelegate'

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