アプリの多くの場所で、次のコードを使用してバックグラウンドタスクを実行し、メインスレッドに通知します。
dispatch_queue_t backgroundQueue = dispatch_queue_create("dispatch_queue_#1", 0);
dispatch_async(backgroundQueue, ^{
dispatch_async(dispatch_get_main_queue(), ^{
});
});
BackgroundQueueを1か所(どこが最善の方法ですか?)に作成し、後で使用することはできますか?システムグローバルキューについては知っていますが、順序は重要です。
このような何かがうまくいくはずです:
dispatch_queue_t backgroundQueue() {
static dispatch_once_t queueCreationGuard;
static dispatch_queue_t queue;
dispatch_once(&queueCreationGuard, ^{
queue = dispatch_queue_create("com.something.myapp.backgroundQueue", 0);
});
return queue;
}
NSOperationQueueとそれにプッシュ操作を使用することもできます。操作が順不同で実行されないようにするために、isConcurrentをNOに設定できます。
queue = dispatch_queue_create("com.something.myapp.backgroundQueue", 0);
先行するのはシリアルキューです。同時キューを作成する場合は、DISPATCH_QUEUE_CONCURRENTを使用できます。
IOS 5以降では、キュータイプとしてDISPATCH_QUEUE_CONCURRENTを指定することにより、同時ディスパッチキューを自分で作成できます。
dispatch_queue_t queue = dispatch_queue_create("downLoadAGroupPhoto",
DISPATCH_QUEUE_CONCURRENT);