GCD便利ですね。手軽にネストした非同期処理を書けるので、使いまくっています。しかし一直線にコードを書いていると見過ごしがちなのが、キャンセル処理です。時間のかかる処理を途中で止める場合や、別のUIViewControllerに遷移するから処理そのものが必要なくなった場合に、処理を止めたい場合があります。具体的には以下の様なケースがあると思います。 大きなファイルのアップロード中にキャンセルボタンを出したい 画面遷移をしたら、前の画面で進行中の画像ダウンロードはキャンセルしたい このような場合にGCDライクに使えて、しかもキャンセル処理ができのが組み込みクラスのNSBlockOperationです。早速使い方を見て行きましょう。weakのおかげでややこしいメモリ管理を考えなくて楽です。 -(void)heavyTask { if (!_queue) _queue = [[NSOperati
![NSBlockOperationで手軽にキャンセル処理 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/58f3092a81856f95e8032266707d9044be8984f0/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-f625e957b80c4bd8dd47b724be996090.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9TlNCbG9ja09wZXJhdGlvbiVFMyU4MSVBNyVFNiU4OSU4QiVFOCVCQiVCRCVFMyU4MSVBQiVFMyU4MiVBRCVFMyU4MyVBMyVFMyU4MyVCMyVFMyU4MiVCQiVFMyU4MyVBQiVFNSU4NyVBNiVFNyU5MCU4NiZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDbWlkZGxlJnM9N2IyODM0YTQ3MmY5ZjY2NDMxZTllNjFmYTk4MWU2OGU%26mark-x%3D142%26mark-y%3D151%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwbmluamlua3VuJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0zOTFiNjI1Mjk3M2ZlNWE0NWMyMzk2NmQ4ZWIzMjJlMA%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Db9dffbd34dac5e9dec2918ed2f580de1)