Swift 自我守护
Swift guard with self
我在swift中跳弱强舞是这样的:
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 中做了什么?没有这个我不能分配给自己。为什么这行得通?使用它是一种好习惯吗?
出示一张纸条,内容如下:
If you need to give a constant or variable the same name as a reserved
Swift keyword, surround the keyword with backticks (`) when using it
as a name. However, avoid using keywords as names unless you have
absolutely no choice.
编辑:
我这样做的方法是像您以前那样使用任何其他名称,例如 strongSelf
。因为最后,`self` 和 strongSelf
都将成为一些要采取行动的变量。所以我建议我们是否可以使用其他一些很好的变量名。
一些更新(我不会在这里提及何时使用它,而是如何使用它)。
从 Swift 4.2 使用应该是这样的:
guard let self = self else { return }
使用`
基本上是基于编译器错误,因此不建议使用。
要获得更多信息,没有比 this 更好的来源了。解释所有背后的原因和其他注意事项。
简而言之,以上与代码中看到的其他情况更一致,例如:
if let myVariable = myVariable
所以不创建confusion/discrepancies。
我在swift中跳弱强舞是这样的:
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 中做了什么?没有这个我不能分配给自己。为什么这行得通?使用它是一种好习惯吗?
出示一张纸条,内容如下:
If you need to give a constant or variable the same name as a reserved Swift keyword, surround the keyword with backticks (`) when using it as a name. However, avoid using keywords as names unless you have absolutely no choice.
编辑:
我这样做的方法是像您以前那样使用任何其他名称,例如 strongSelf
。因为最后,`self` 和 strongSelf
都将成为一些要采取行动的变量。所以我建议我们是否可以使用其他一些很好的变量名。
一些更新(我不会在这里提及何时使用它,而是如何使用它)。
从 Swift 4.2 使用应该是这样的:
guard let self = self else { return }
使用`
基本上是基于编译器错误,因此不建议使用。
要获得更多信息,没有比 this 更好的来源了。解释所有背后的原因和其他注意事项。
简而言之,以上与代码中看到的其他情况更一致,例如:
if let myVariable = myVariable
所以不创建confusion/discrepancies。