首先,dispatch_async
如何确定使用哪个线程?它是随机选择吗?我需要进行解析和核心数据操作,因此不想阻塞UI线程,使用dispatch_async
。但是,之后我发送了一个NSURLRequest
来获取更多的数据,但是回调函数从未被调用(可能是因为该线程已经死亡)。
那么有什么好方法可以解决这个问题?同时,我不能使用
sendAsynchronousRequest:queue:completionHandler:
由于部署的操作系统是 4,所以我现在只在内部发送请求。
dispatch_async(dispatch_get_main_queue(), ^{
});
这段代码是在dispatch_async(myQueue)
块内部,用以解析并将数据保存到核心数据中。但是,我认为这种方式不太合适,我是指应该有一种方式可以使用dispatch_async,而不会终止线程,对吧?因为使用同步请求不是一个选择。
dispatch_async
不等同于新线程。新的队列可能意味着新线程,也可能不是。跟我重复:“我不必担心线程,GCD会为我处理”。:-)。 - mattjgallowaydispatch_async
相同的队列中,就没问题了,这应该是相当明显的。同步意味着对dispatch_sync
的调用不会返回,直到您调度的块完成,而这个块在外部块返回之前无法运行 = 死锁。 - mattjgalloway