我正在尝试了解iOS中的队列;使用此代码
dispatch_queue_t coda_thread=dispatch_queue_create("coda_thread",NULL);
//UIPROGRESS VIEW
for(i=0;i<=10;i=i+1)
{
dispatch_async(coda_thread,
^{
NSLog(@"CODA_THREAD");
NSLog(@"attendo..");
[NSThread sleepForTimeInterval:10];
dispatch_async(dispatch_get_main_queue(),
^{
NSLog(@"MAIN THREAD");
NSLog(@"aggiorno barra..");
[self.upv setProgress:i/10 animated:YES];
});
});
}
我预计GUI中没有冻结,因为睡眠是在主队列中的setProgress中的coda_thread(而不是在更新GUI的主队列中)队列。而是我冻结了我的GUI ..为什么?
答案 0 :(得分:2)
问题是调度队列不是新线程。您无法保证调度队列实际上使用的是其他线程。将GCD API与线程API结合使用将无法正常工作。