iPadには、3つのステップを順番に実行する必要がある機能があります。たとえば、タスク1、タスク2、タスク3としましょう。Task2 は、サーバーからいくつかのデータをロードする必要があります。そのため、task2 を別のバックグラウンド スレッドに配置する必要があります。
- (IBAction)dbSizeButton:(id)sender {
//Task1......
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
//Task2 .....which go to server and download some stuff and update database.
dispatch_sync(dispatch_get_main_queue(), ^{
//Task3, continue to work on UI
});
});
}
しかし、Task2 の開始時にアプリが強制終了されることがよくあるようです。正確な理由はわかりません。Task2 が別のスレッドで実行されていることがわかります。それで、GCDを使用する代わりに、それがそれを行う方法ではない場合、Task2の最後にメッセージまたは通知をメインスレッドに送信して、Task3を開始できるかどうか疑問に思っていますか? それをどのように正確に行うのですか?