我在 iPad 上有一个功能,我需要依次运行 3 个步骤,比如说 task1、task2、task3。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?究竟该怎么做?