2017-06-13 27 views
0

Hallo ich folge einem ios 10 und Swift 3 Klasse auf dememy und der Code des Ausbilders machen mein Bild in der Tabellenansicht Zelle sehr langsam heruntergeladen werden (es dauert 15 Sekunden, um 5 Bild zu laden) mit diesem Code:.IOS Tabellenansicht Zelle Bild herunterladen

let url = URL(string : partyRock.ImageUrl)! 

DispatchQueue.global().async { 
    do{ 
     let data = try Data(contentsOf: url) 

     DispatchQueue.global().sync{ 
      self.videoPreviewImage.image = UIImage(data: data) 
     } 
    } catch { 
     //handle catch error 
    } 

und mit diesem Code ist es sehr schnell herunterladen (die Sache ist, dass ich den Unterschied zwischen DispatchQueue.main.sync und DispatchQueue.global nicht verstehen() synchronisieren

let url = URL(string : partyRock.ImageUrl)! 

DispatchQueue.global().async { 
    do{ 
     let data = try Data(contentsOf: url) 

     DispatchQueue.main.sync{ 
      self.videoPreviewImage.image = UIImage(data: data) 
     } 
    } catch { 
     //handle catch error 
    } 
+0

'main' Thread hat die höchste Priorität ... also ist es der schnellste. Ansonsten sind sie beide gleich ... – Honey

Antwort

0

DispatchQueue.main.sync ist Hauptwarteschlange: Wird im Hauptthread ausgeführt und ist eine serielle Warteschlange. Dies ist eine häufige Wahl, um die Benutzeroberfläche nach Abschluss der Arbeit in einer Aufgabe in einer gleichzeitigen Warteschlange zu aktualisieren.

DispatchQueue.global(). Async ist Globale Warteschlangen: gleichzeitige Warteschlangen, die vom gesamten System gemeinsam genutzt werden. Es gibt vier solcher Warteschlangen mit unterschiedlichen Prioritäten: Hoch, Standard, Niedrig und Hintergrund. Die Hintergrundprioritätswarteschlange ist E/A-gedrosselt. Dies ist eine häufige Wahl für die Ausführung von Arbeiten außerhalb der Benutzeroberfläche im Hintergrund.

.

0
DispatchQueue.global().async 

ich ans läuft es asynchron im Hintergrund.

DispatchQueue.main.sync 

bedeutet, dass es synchron im Hauptthread läuft.

Update-UI muss immer auf Haupt-Thread sein. Während andere (Download/Upload von Daten zum Server usw.) in den Hintergrund gesendet werden können.

Verwandte Themen