GCDのdispatch queueはdispatch_async()などで並列処理を登録できるが、一度登録した処理を破棄することはできない。
dispatch_suspend()を使うと実行を一時的に中止できるが、これはdispatch_resume()とセットで使わなければならず、queue自体をずっと停止しておけるわけではない。
このようなときは、GCDの関数ではなく、CocoaのNSOperationQueueを使うと解決できる。NSOperationQueueにはcancelAllOperationsを始め、いくつかの便利なメソッドが用意してあるので、Cocoaを使っているときは無理にGCDの関数を使うよりこちらを使った方が良いかもしれない。