20181106追記
4.2でimplementedになったようです
https://github.com/apple/swift-evolution/blob/master/proposals/0079-upgrade-self-from-weak-to-strong.md
このような書き方ができるようになりました
{ [weak self] response in
guard let self = self else {
return
}
self.reload(response)
}
↓は4.1以前の内容
weak self参照を↓のようにアンラップするパターンが多いかと思いますが
{ [weak self] response in
guard let `self` = self else {
return
}
self.reload(response)
}
これができてしまうのはバグだそうです
https://github.com/apple/swift-evolution/blob/master/proposals/0079-upgrade-self-from-weak-to-strong.md
AppleのChris Lattnerは「これはコンパイラのバグです」と述べています。
https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160118/007425.html
self を使ってしまうと、このバグが修正されて使えなくなったとき、どこを直せばいいのかわかりにくいので、 strongSelf, me, などなどわかりやすい別名を使ったほうが良さそうです