当前位置: 首页 > 面试题库 >

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

马欣荣
2023-03-14
问题内容

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

例如

protocol MyDelegate: class {

}

问题答案:

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

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

为什么这么重要?

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

protocol ExampleProtocol {}

class DelegatedClass {
    weak var delegate: ExampleProtocol?
}

这会产生错误:

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

在此处输入图片说明

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



 类似资料:
  • 问题内容: $(‘button’).click(function () { 我的问题:尽管我打了个电话,为什么它仍然会提醒下一个号码?就像:忽略下面的代码,然后继续下一个元素 问题答案: 除了引发异常外,没有其他方法可以停止或中断循环。如果您需要这种行为,该方法是错误的工具。 提前终止可以通过以下方式完成: 一个简单的循环 一… 圈 另一个阵列的方法:,,,和测试使用谓词返回truthy值的数组元

  • 例如: 如何与类的正常继承相反地使用它呢?我不能像在或int等文件中存储字符串一样,通常使用类似的东西,那么该如何使用呢?

  • 问题内容: protocol BasePresenterProtocol : class {} protocol DashboardPresenterProtocol : BasePresenterProtocol {} 在上面的代码中,我在下一行收到错误 ,但未确认协议,但我已在中声明。虽然我已经宣布 为什么会出现此错误?请让我知道我在这段代码中做错了什么。 问题答案: 您不能使用type 属性

  • 如果这听起来像是一个非常愚蠢的问题,我很抱歉,但这在《飞镖与颤栗》中是一个全新的问题。在颤振示例中,我经常看到这样的构造函数: 我知道什么{}是MAP或SET。但是{}在这里到底是什么意思?为什么它只用于传达一个值Key键? 提前谢谢

  • 我想创建一个

  • 问题内容: 下面是代码片段。 有人可以向我解释@符号在Java中的含义吗? 问题答案: 这是一个注释。 注释是元数据的一种形式。它们提供的程序数据不属于程序本身。注释对其注释的代码的操作没有直接影响。 注释确实会影响工具和库对待程序的方式,进而会影响正在运行的程序的语义。可以从源文件,类文件中读取注释,也可以在运行时从中读取注释。