2017-06-13 77 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 

表示它在主线程中同步运行。

更新用户界面必须始终在主线程上。而其他人(下载/上传数据到服务器等)可以发送到后台。

相关问题