Ich habe folgenden Code erhalten
-(void)changeText
{
dispatch_queue_t gqueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_async(gqueue, ^(void){
//simulate a network traffic delay
[NSThread sleepForTimeInterval:5];
NSLog(@"start executing");
self.mylabel.text = @"Yeah! Text Changed";
NSLog(@"stop exec");
});
}
Das Problem ist, dass es zu viel Zeit in Anspruch nimmt, den Beschriftungstext zu ändern, als dies normalerweise der Fall ist. Wenn ich Haupt-Warteschlange verwenden, wird es sofort tun, aber UI wird für 5 Sekunden blockiert werden.
Was ist der richtige Weg, um GCD zu verwenden, so dass ich Sachen in einem anderen Thread herunterladen kann, mein UI wird nicht blockiert, und sobald meine Arbeit getan, mein UI wird sofort ändern?