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

协议的属性声明中的“获取”是什么意思?

胡承悦
2023-03-14
问题内容

我正在看自动布局库中的一些代码。其中,UIView采用了一个协议:

extension UIView: Constrainable {}
extension UILayoutGuide: Constrainable {
    // LayoutGuide doesn't have baseline anchors, so just use the bottom anchor
    public var firstBaselineAnchor: NSLayoutYAxisAnchor {
        return bottomAnchor
    }
    public var lastBaselineAnchor: NSLayoutYAxisAnchor {
        return bottomAnchor
    }
}

public protocol Constrainable {
    var topAnchor:      NSLayoutYAxisAnchor { get }
    var bottomAnchor:   NSLayoutYAxisAnchor { get }
    var leftAnchor:     NSLayoutXAxisAnchor { get }
    var rightAnchor:    NSLayoutXAxisAnchor { get }
    var leadingAnchor:  NSLayoutXAxisAnchor { get }
    var trailingAnchor: NSLayoutXAxisAnchor { get }

    var centerXAnchor:  NSLayoutXAxisAnchor { get }
    var centerYAnchor:  NSLayoutYAxisAnchor { get }

    var widthAnchor:    NSLayoutDimension { get }
    var heightAnchor:   NSLayoutDimension { get }

    var firstBaselineAnchor : NSLayoutYAxisAnchor { get }
    var lastBaselineAnchor  : NSLayoutYAxisAnchor { get }
}

一个空虚的{ get }成就是什么?


问题答案:

这些是采用协议的类必须为其提供吸气剂的属性。该协议未指定有关setter的任何内容,因此类可以提供计算的属性,而不是存储的属性。

例如,采用的类Constrainable可以topAnchor通过添加来满足具有的要求

var topAnchor: NSLayoutYAxisAnchor

或通过添加

var topAnchor: NSLayoutYAxisAnchor {
    ...
    return ...
}


 类似资料:
  • 问题内容: 为什么以下代码会产生错误? 这个类似问题的答案很有意义。但是,在我的示例中,该属性为get-only。为什么不行呢?是Swift的缺点,还是有一定的道理呢? 问题答案: 没有真正的理由为什么不可能做到这一点,只读属性要求 可以 是协变的,因为从完全合法的类型化的属性返回实例。 Swift暂时不支持。为此,编译器将必须在协议见证表和符合的实现之间生成一个thunk,以执行必要的类型转换。

  • 问题内容: 解释了如何解决创建is 的问题。 本质上,有两种方法: 使用关键字: 使用关键字: 我正在尝试进行一些研究,以了解这两种方法之间的确切区别。该文档非常清楚有关使用: 为了在Objective-C中可访问和使用,Swift类必须是Objective-C类的后代,或者必须将其标记为。 但是,在任何地方我都找不到有关实际操作的信息。详细考虑整个概念,实际上并没有多大意义。我的理解是,这是Sw

  • 我生成了一个JWT,其中有一些我很了解的声明,但是在头中有一个声明叫做< code>kid。有人知道是什么意思吗? 我使用auth0.com生成了令牌

  • 问题内容: twitter引导程序代码具有许多CSS属性,最后带有一个。 例如 怎么办? 更新 我不好说不清楚。我正在使用Bootstrap的SASS部分。 问题答案: 据我所知,Twitter Bootstrap使用LESS。另一方面,!default它实际上是Sass的一部分,用于为Sass变量($var)提供默认值,这将使其在给定的上下文中无效, 即使在Sass中也是如此 。 此外,我!de

  • 问题内容: CSS属性的值是什么意思。CSS属性的值设置为时会发生什么? 问题答案: 所述属性的值根据元素的内容或上下文 自动 调整。 例如,带有的块级元素会随着包含更多文本而变高。再举一个例子,具有的图块元素的左,右边界将增加,直到其沿视口的y轴居中。 实际上,这取决于您将值赋予的属性,不同的属性根据内容和上下文的不同而表现不同。

  • 问题内容: 我有一个pom.xml文件,在该文件中,我看到它们是相同引用的3个依赖项,区别在于标记中 我删除了具有的依赖项,并且仅保留了一个依赖项。我测试了我的应用程序,一切正常。 使用此分类标签的目的是什么?以及为什么我需要重复两次依赖项才能使用添加标记。 问题答案: 分类器区分从相同POM构建但内容不同的工件。它是一些可选的任意字符串,如果存在,则在版本号之后附加到工件名称。 资源