読者です 読者をやめる 読者になる 読者になる

文字っぽいの。

文字を書いています。写真も混ざります。

Swiftの"[weak self]"にアクセスする時に"if let weakSelf = self"とか"self?"を書きたくない人へ

今まで

大体の場合、

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...の部分が複雑じゃない場合は便利だと思ってる感じです。

追記