[英]IOS table view cell image download
嗨,我在udemy上跟隨了ios 10和swift 3類,教師的代碼使我的圖像非常緩慢地下載到表格視圖單元格中(使用15秒載入5張圖像),代碼如下:
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()。sync之間的區別
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
}
DispatchQueue.global().async
表示它在后台異步運行。
DispatchQueue.main.sync
表示它在主線程中同步運行。
更新UI必須始終在主線程上。 而其他(將數據下載/上傳到服務器等)可以發送到后台。
DispatchQueue.main.sync是主隊列:在主線程上運行,並且是串行隊列。 在完成並發隊列中的任務中的工作之后,這是更新UI的常見選擇。
DispatchQueue.global()。async是全局隊列:整個系統共享的並發隊列。 有四個這樣的隊列,它們具有不同的優先級:高,默認,低和后台。 后台優先級隊列受到I / O限制。 這是在后台執行非UI工作的常見選擇
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.