Подтвердить что ты не робот

Запустите фоновый поток на Swift 3

У меня есть функция, которая выглядит следующим образом:

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.

Я пробовал методы GDC Swift2, но это не сработало.

Что-то изменилось в теме темы в Swift3?

Спасибо!

4b9b3361

Ответ 1

ОК, чтобы загрузить изображение на фоне, но это не нормально, чтобы выполнять обновления пользовательского интерфейса в фоновом потоке. Поэтому функция должна содержать два потока.

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

Ответ 2

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

}