post Image
guard let `self` = self … を使おうとしているそこの貴方!ちょっとお待ちください!

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, などなどわかりやすい別名を使ったほうが良さそうです


『 Swift 』Article List