我是Dispatch队列的新手,现在正尝试通过此调度队列调用后台操作。
我怀疑,请帮助我。在下面的例子中,
whatQueue: - 它应该是mainQueue,queueA还是我应该创建一个新的队列?
dispatch_queue_t queueA = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_async(queueA, ^{
NSMutableArray * items = listofItems;
for(NSString * str in items)
{
//Run a sync block to send str to server
dispatch_sync(***whatQueue***, ^{
});
}
});
谢谢, Phani
答案 0 :(得分:0)
使用dispatch_get_main_queue
进行嵌套调度(我假设您希望主线程上的同步调度用于UI更新,毕竟)。否则,您已经在后台运行,无需进一步调度。
答案 1 :(得分:0)
您没有解释为什么希望以同步方式执行内部块的原因。我想你想要:
序列化将字符串发送到服务器;
等待所有字符串发送后再继续。
在这种情况下,你可以:
在同一队列A上执行网络任务(无需新的调度);
确保您的基础网络层(NSURLConnection / AFNetworking / ASIHTTP / ...)正在执行同步网络操作(否则,网络请求将立即返回并在后台以其自己的线程完成)。 / p>
答案 2 :(得分:0)
感谢您的回复,
我不想更新UI上的任何内容,只是想在不影响用户界面的情况下将脱机数据推送到服务器。
因此主调度队列会迭代所有记录,并应使用嵌套队列发送记录同步模式,并且还应处理每个请求的响应。