【发布时间】:2016-09-07 05:39:25
【问题描述】:
我正在以这种方式快速地跳弱强的舞蹈:
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 中做了什么?没有这个,我无法分配给自己。为什么这行得通?使用它是一个好习惯吗?
【问题讨论】:
-
有一个提议允许
guard let self = self else { return }在 Swift 的未来版本中使用:github.com/apple/swift-evolution/blob/master/proposals/…,并且您的代码可以工作被认为是 Swift 编译器中的一个错误:lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160118/…。 -
在实践中,整个 guard dance 是没有意义的,因为 GCD 关闭不会导致循环保持。
-
好的,谢谢你通知我。
标签: swift swift-guard