我什么时候应该使用 self 快速访问属性?

2023-11-26

在这样的简单示例中,我可以省略 self 来引用 backgroundLayer,因为背景颜色设置在哪个背景层上是明确的。

class SpecialView: UIView {
    let backgroundLayer = CAShapeLayer()

    init() {
        backgroundLayer.backgroundColor = UIColor.greenColor().CGColor
    }
}

但是,就像在 Objective-C 中一样,我们可以通过添加类似名称的局部变量(或常量)来混淆事物。现在背景颜色被设置在非形状图层上:

class SpecialView: UIView {
    let backgroundLayer = CAShapeLayer()

    init() {
        var backgroundLayer = CALayer()

        backgroundLayer.backgroundColor = UIColor.greenColor().CGColor
    }
}

(这是通过使用 self.backgroundLayer.backgroundColor 解决的)

在 Objective-C 中,我总是避免使用 ivars 来获取属性,并且为了清楚起见,属性总是以 self 为前缀。我不必担心 swift 中的 ivars,但是何时应该在 swift 中使用 self 是否还有其他考虑因素?


仅有的几次self当引用闭包内的属性时,以及正如您所指出的,将其与同名的局部变量区分开来是必需的。

然而,就我个人而言,我更喜欢总是写“self”,因为:

  1. 这是一个即时且明显的标志,表明该变量是一个属性。这很重要,因为它是一个属性,意味着它的状态可以比局部变量更广泛、以不同的方式变化。此外,更改属性比更改局部变量具有更大的含义。
  2. 如果您决定引入与属性同名的参数或变量,则不需要更新代码
  3. 可以轻松地将代码复制到需要 self 的闭包中或从闭包中复制出来
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我什么时候应该使用 self 快速访问属性? 的相关文章

随机推荐