您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Swift中,协议从class关键字继承意味着什么?

在Swift中,协议从class关键字继承意味着什么?

红蜘蛛 的答案的要旨是正确的,但它错过了我认为很重要的原因_ 。它取决于ARC和内存管理。

Swift是引用类型和值类型的语言。类_是引用类型,而其他所有类型都是值类型。实际上,我们并没有真正指定该协议是从… _继承 而来class的,更像是我们指定该协议只能由 引用类型 实现。

为什么这么重要?

这很重要,因为没有它,我们将无法weak在协议中使用关键字。

protocol ExampleProtocol {}

class DelegatedClass {
    weak var delegate: ExampleProtocol?
}

这会产生错误

“弱”不能应用于非类类型“ ExampleProtocol”

在此处输入图片说明

那么为何不?因为该weak关键字仅对ARC适用的引用类型有意义。ARC不适用于值类型。而且,如果不使用指定协议class,我们就不能保证将delegate属性设置为引用类型。(如果不使用weak,则很可能会创建一个保留周期。)

Swift 2022/1/1 18:15:21 有506人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶