GCD便利ですね。手軽にネストした非同期処理を書けるので、使いまくっています。しかし一直線にコードを書いていると見過ごしがちなのが、キャンセル処理です。時間のかかる処理を途中で止める場合や、別のUIViewControllerに遷移するから処理そのものが必要なくなった場合に、処理を止めたい場合があります。具体的には以下の様なケースがあると思います。 大きなファイルのアップロード中にキャンセルボタンを出したい 画面遷移をしたら、前の画面で進行中の画像ダウンロードはキャンセルしたい このような場合にGCDライクに使えて、しかもキャンセル処理ができのが組み込みクラスのNSBlockOperationです。早速使い方を見て行きましょう。weakのおかげでややこしいメモリ管理を考えなくて楽です。 -(void)heavyTask { if (!_queue) _queue = [[NSOperati