2016-05-24 2 views
0

Von dem, was ich verstehe, können Sie nur die Benutzeroberfläche von der Hauptwarteschlange aktualisieren, also warum funktioniert dieser Code überhaupt?Warum funktioniert der UI-Aktualisierungscode?

dispatch_sync(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) { 

      self.myLabel.text = "Updated text" 
     } 

Die von QOS_CLASS_BACKGROUND bereitgestellt Warteschlange ist definitiv nicht die Haupt-Warteschlange!

Antwort

2

Es ist nicht so, dass Sie die Benutzeroberfläche niemals aus einer Hintergrundwarteschlange aktualisieren können. Es ist, dass es nicht definiert ist und es möglicherweise nicht richtig funktioniert, also sollte es nicht getan werden.

+0

Danke, ich dachte, da wäre unbedingt ein Laufzeitfehler dabei! –

+1

Im Allgemeinen wird keine, aber einige UIKit-Code eine Nachricht anzeigen und es kann eine Ausnahme in einer zukünftigen Version von iOS verursachen. – rmaddy

+0

Aber dann, ein bisschen andere Frage, aber was ist der Sinn von QOS_USER_INTERACTIVE? Arbeit, die an diese Warteschlange übergeben wird, wird nicht im Haupt-Thread passieren, richtig? Warum ist diese Warteschlange noch für interaktive Benutzerelemente reserviert? –

Verwandte Themen