75142913在线留言
【SwiftUI进阶】多线程处理_IOS开发_网络人

【SwiftUI进阶】多线程处理

Kwok 发表于:2021-04-23 19:23:42 点击:49 评论: 0
//在子线程里执行图片下载,因为下载耗时会卡住界面
DispatchQueue.global(qos: .userInitiated).async {
     //contentsOf 默认是从URL读取数据
     if let imageData = try? Data(contentsOf: url){
        //检查一下是否还是用户拖入的图
        if url == self.emojiArt.backgroundURL{
            //下载成功后在主线程里执行替换背影视图
            DispatchQueue.main.async {
               self.backgroundImage = UIImage(data: imageData)
           }
       }
     }
}
if let url = self.emojiArt.backgroundURL{
    fetchImageCancellable.cancel()//下次抓取前,先取消上次的抓取
    fetchImageCancellable = URLSession.shared.dataTaskPublisher(for: url)
        .map{ data,URLResponse in UIImage(data: data) }
        .receive(on: DispatchQueue.main)//在主线程上执行绘图工作
        .replaceError(with: nil)
        .assign(to: .backgroundImage, on: self)
}
除非注明,网络人的文章均为原创,转载请以链接形式标明本文地址:https://www.55mx.com/post/140
标签:多线程
0
感谢打赏!

《【SwiftUI进阶】多线程处理》的网友评论(0)

本站推荐阅读

热门点击文章