10

我正在以这种方式快速地跳弱强的舞蹈:

dispatch_async(dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), { [weak self] in
    guard let `self` = self else {
        return
    }
    self.doSomething(1)
})

在此之前,我使用strongSelf的是“self”而不是“self”。在一个网站上,我看到我可以使用这个字符 ` 。

但是这个角色在 Swift 中做了什么?没有这个,我无法分配给自己。为什么这行得通?使用它是一个好习惯吗?

4

2 回答 2

17

一点更新(我不会在这里提及何时使用它,而是如何使用它)。

从 Swift 4.2 开始,使用应该是这样的:

guard let self = self else { return }

使用 `基本上基于编译器错误,因此不建议使用。

有关更多信息,没有比更好的来源了。解释背后的所有推理和其他考虑因素。

简而言之,以上与代码中看到的其他情况更一致,例如:

if let myVariable = myVariable

所以不会造成混淆/差异。

于 2018-10-03T11:34:18.313 回答
9

斯威夫特编程语言

显示说明以下内容的说明:

如果您需要为常量或变量指定与保留的 Swift 关键字相同的名称,请在将其用作名称时用反引号 (`) 将关键字括起来。但是,除非您别无选择,否则请避免使用关键字作为名称。

编辑:

我这样做的方法是使用任何其他名称,例如strongSelf像你以前那样。因为最终,`self` 和 `self`strongSelf都会成为一些变量来操作。所以我建议我们是否可以使用其他一些变量名。

于 2016-09-07T05:48:14.523 回答