我正以这种方式快速做强弱的舞蹈:
dispatch_async(dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), { [weak self] in
guard let `self` = self else {
return
}
self.doSomething(1)
})
在此之前,我使用的是strongSelf
而不是`self`。在一个网站上,我发现我可以使用这个字符。
但是这个角色在Swift中做了什么?没有这个,我无法分配给自己。为什么这样做?使用它是一种好习惯吗?
答案 0 :(得分:7)
提供说明如下:
如果需要为常量或变量赋予与保留相同的名称 Swift关键字,在使用时用反引号(`)包围关键字 作为一个名字。但是,除非有,否则请避免使用关键字作为名称 绝对没有选择。
修改强>
我这样做的方式是使用任何其他名称,例如strongSelf
,就像您之前所做的那样。因为最终,'self`和strongSelf
都将成为一些变量。所以我建议我们是否可以使用一些其他变量名称。
答案 1 :(得分:5)
一些更新(我将在何时使用它而不是在这里使用,而是如何使用)。
从Swift 4.2起,其用法应类似于:
guard let self = self else { return }
使用`
基本上是基于编译器错误的,因此不建议使用。
有关更多信息,没有比this更好的信息来源了。解释所有背后的推理和其他注意事项。
简而言之,以上内容与代码中的其他情况更为一致:
if let myVariable = myVariable
因此不会造成混乱/差异。