2017-06-13 132 views
0

嗨即時通訊udemy上的ios 10和swift 3類以及教師代碼使我的圖像非常緩慢地下載到表視圖單元格中(它需要15次調用才能加載5個圖像)與此代碼:IOS表格視圖單元格圖像下載

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 
    } 

而與此代碼,將其下載速度非常快(的事情是,我不明白DispatchQueue.main.sync和DispatchQueue.global()之間的區別同步

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'線程具有最高的優先級......所以它是最快的。否則它們都是一樣的... – Honey

回答

0

DispatchQueue.main.sync是主隊列:在主線程上運行並且是一個串行隊列。 這是在完成併發隊列任務中的工作後更新UI的常用選擇。

DispatchQueue.global()。async是全局隊列:由整個系統共享的併發隊列。有四個這樣的隊列具有不同的優先級:高,默認,低和背景。後臺優先級隊列被I/O限制。 這是在後臺執行非UI工作的常見選擇

0
DispatchQueue.global().async 

me它以異步方式在後臺運行。

DispatchQueue.main.sync 

表示它在主線程中同步運行。

更新用戶界面必須始終在主線程上。而其他人(下載/上傳數據到服務器等)可以發送到後臺。

相關問題