我最近继承了一个用Swift写的非文档,意大利面和极其错误的项目。
在这里和那里整理一些东西,并在每个协议声明中遇到这个:
protocol SomeProtocol: class { ...
就像字面上的: class
一样 - 这不是其他东西的占位符。
我的问题是:: class
实现或宣布了什么?
之后个人从未放过: class
,我通常保留继承其他协议。我删除了一对没有结果的情侣,但想到我应该在继续之前检查实际目的(如果有的话)。
致以最诚挚的问候,
弗兰克
答案 0 :(得分:1)
: class
表示此协议只能由类符合。
一个用例是代表。 delegate
属性通常声明为weak
,以避免保留周期。例如:
class MyCoolClass {
weak var delegate: MyCoolClassDelegate?
}
如果MyCoolClassDelegate
声明如此:
protocol MyCoolClassDelegate { }
然后结构也可以符合它。但结构类型无法声明weak
!因此,会发生此错误:
'weak'可能只适用于类和类绑定协议类型,而不是'MyCoolClassDelegate'
这就是您需要将其声明为: class
。