Objective-C 冻结的 GUI 也有队列

Objective-C freezed GUI also with queue

我正在尝试了解 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 不会冻结,因为睡眠在 coda_thread(而不是在更新 GUI 的主队列)队列中,而 setProgress 在主队列中。相反,我在我的 GUI 中冻结..为什么这个?

问题是调度队列不是新线程。您无法保证调度队列实际上正在使用不同的线程。将 GCD API 与线程 API 结合使用是行不通的。