今まで
大体の場合、
Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"]).responseJSON { [weak self] response in guard let weakSelf = self else { return } // do something... weakSelf.tableView.reloadData() }
とか
Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"]).responseJSON { [weak self] response in // do something... self?.tableView.reloadData() }
と書きます。
違う書き方
Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"]).responseJSON { [weak self] response in guard let `self` = self else { return } // do something... self.tableView.reloadData() }
便利!
余談
SlackのSwiftJPチャンネルで色々議論されてて面白い。個人的には、// do something...
の部分が複雑じゃない場合は便利だと思ってる感じです。
追記
バッククオートでselfに代入できるのはおそらくバグだとアップルの人の回答。その上でこの提案が受け入れられたら、普通にselfにguard節で代入できるようになる。 https://t.co/MVT7iEO5Pu https://t.co/MGYfn6YcHB
— kishikawa katsumi (@k_katsumi) 2016, 1月 20