在Swift中,协议从class关键字继承意味着什么?
在Swift中,协议从class关键字继承意味着什么?
例如
protocol MyDelegate: class {}
回答:
红蜘蛛 的答案的要旨是正确的,但它错过了我认为很重要的原因_ 。它取决于ARC和内存管理。
Swift是引用类型和值类型的语言。类_是引用类型,而其他所有类型都是值类型。实际上,我们并没有真正指定该协议是从… _继承
而来class
的,更像是我们指定该协议只能由 引用类型 实现。
为什么这么重要?
这很重要,因为没有它,我们将无法weak
在协议中使用关键字。
protocol ExampleProtocol {}class DelegatedClass {
weak var delegate: ExampleProtocol?
}
这会产生错误:
“弱”不能应用于非类类型“ ExampleProtocol”
那么为何不?因为该weak
关键字仅对ARC适用的引用类型有意义。ARC不适用于值类型。而且,如果不使用指定协议class
,我们就不能保证将delegate
属性设置为引用类型。(如果不使用weak
,则很可能会创建一个保留周期。)
以上是 在Swift中,协议从class关键字继承意味着什么? 的全部内容, 来源链接: utcz.com/qa/410109.html