在Swift 3上运行一个后台线程

我有一个这样的function:

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的线程主题有什么改变?

谢谢!

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

 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)!) } }) } }