首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift 3上运行后台线程

在Swift 3上运行后台线程
EN

Stack Overflow用户
提问于 2016-10-06 19:30:10
回答 3查看 32.9K关注 0票数 27

我有一个函数是这样的:

代码语言:javascript
复制
fileprivate func setupImageViewWithURL(url: URL) {
    var image: UIImage? = nil
    do {
        try image = UIImage(data: Data(contentsOf: url))!
    } catch is NSError {
        print("Failed")
    }

    image = self.imageWithImage(sourceImage: image!, scaledToWidth: UIScreen.main.bounds.size.width)
    self.imageImageView.image = image
    self.imageImageView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: (image?.size.height)!)
}

我想在Background thread上运行它。

我尝试过Swift2GDC方法,但它不起作用。

Swift3中的线程主题有什么变化吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-06 20:02:21

可以在后台加载图像,但不能在后台线程上执行UI更新。这就是函数必须包含两个线程的原因。

代码语言:javascript
复制
func setupImageViewWithURL(url: URL) {
    var image: UIImage? = nil

    DispatchQueue.global().async { 
        do {
            try image = UIImage(data: Data(contentsOf: url))!
        } catch {
            print("Failed")
        }
        DispatchQueue.main.async(execute: {
            if image != nil {
                image = self.imageWithImage(sourceImage: image!, scaledToWidth: UIScreen.main.bounds.size.width)
                self.imageImageView.image = image
                self.imageImageView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: (image?.size.height)!)
            }
        })
    }
}
票数 59
EN

Stack Overflow用户

发布于 2018-04-12 14:12:32

Swift 4.0

函数图像(url: URL) { var setupImageViewWithURL: UIImage?= nil DispatchQueue.global(qos:.background).async { do { try image = UIImage(data: Data(contentsOf: url))!} catch { print("Failed") } DispatchQueue.main.async { if image != nil { image = self.imageWithImage(sourceImage: image!,scaledToWidth: UIScreen.main.bounds.size.width) self.imageImageView.image =图像self.imageImageView.frame = CGRect(x: 0,y: 0,width: UIScreen.main.bounds.size.width,height:(image?.size.height)!) }

票数 5
EN

Stack Overflow用户

发布于 2018-01-06 03:28:28

DispatchQueue.global(qos:.background).async {

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39894834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档