基本上,下面的代码如下工作,当我按下按钮时,它会导致两个标签在 4 秒内同时更新其受尊重的文本。但是,如果我注释掉 dispatch_async(dispatch_get_main_queue(), ^(void){ 我的标签仍然会更新,但第一个标签需要 4 秒,然后第二个标签在第一个标签后 4 秒更新。我想知道是否有人可以解释原因两个标签都在 4 秒内更新,调度代码可以这么说。我试着听教程解释,但它让我更加困惑。
void (^tFunct1)(UILabel *,NSString*) = ^(UILabel *lbl, NSString *src){
NSLog(@"GO TO SLEEP...");
sleep(4);
NSLog(@"WAKING UP...");
dispatch_async(dispatch_get_main_queue(), ^(void){
[lbl setText:src];
NSLog(@"Label Done!");
});
};
-(IBAction)buttonPressed:(id)sender{
aConCurrentQue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_async(aConCurrentQue ,^{ tFunct1(self ->lblOne, @"1 GO!" ); } );
dispatch_async(aConCurrentQue ,^{ tFunct1(self ->lblTwo, @"2 GO!" ); } );
}