Run a background thread on Swift 3 Run a background thread on Swift 3 ios ios

Run a background thread on Swift 3


It's OK to load image on the background, but it's not OK to perform UI updates on background thread. That's why the function must contain two threads.

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


Swift 4.0

func setupImageViewWithURL(url: URL) {    var image: 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 = image                self.imageImageView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: (image?.size.height)!)            }        }    }}


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

}