我在viewController中有一些默认图像,并且在用户操作之后,它会加载外部图像并替换默认图像。UIImage刷新swift3
的问题,它加载图像,但犯规刷新,除非我改变的viewController到另一个
DispatchQueue.main.async {
self.getDataFromUrl(thumbURL, completion: { (data) in
let image = UIImage(data: data!)
self.cityImageView.image = image
print("img refreshed")
})
}
func getDataFromUrl(_ url:String, completion: @escaping ((_ data: Data?) -> Void)) {
URLSession.shared.dataTask(with: URL(string: url)!, completionHandler: { (data, response, error) in
if let newData = data {
completion(newData)
}
}) .resume()
}
,所以我得到一个打印出来img refreshed
但在前端没有什么变化,我失去了什么?
感谢它的工作,但仍然不明白为什么双主线程? –
这是正确的,但你可以删除第一个GCD主。我认为这个方法是在子线程中运行的。所以你只需在关闭中调用主线程。 – Stark
我刚刚复制了你的代码,并把完成块放在主线程中,因为它涉及UIKit。我不知道你为什么需要第一次派遣。正如@stark所评论的,你可能不需要它。 –