У меня есть два UIImageView объектов на мой взгляд, хранящегося в массиве с именем imgViews, и я пытаюсь загрузить изображения для них асинхронно с этим кодом:Скачивали фотография занимает очень много времени, чтобы показать на UIImageView
func showPic(positionIndex: Int){
let urlStr = "https://www.friendesque.com/arranged/userpics/amir/1"
let url = NSURL(string: urlStr)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
if error == nil {
self.imgViews[positionIndex].image = UIImage(data: data)
//self.imgViews[positionIndex].image = UIImage(named: "11665489_10154101221228009_2542754962143804380_n.jpg")
print("Loading Done...")
}
else{
print(error)
}
})
task.resume()
}
и внутри моего viewDidLoad(), у меня есть
showPic(0)
Когда я запускаю код, я вижу "Loading Done..."
сразу это означает, что картина была загружена, но это занимает очень много времени (около 1 мин) для UIImageView вctually измените на загруженное изображение. Это очень маленькая картинка (~ 15K), и это не может быть проблемой времени обработки.
Я попытался загрузить изображение ресурса (часть комментария кода) вместо загруженного изображения, но он все еще медленный.
Я действительно смущен. Почему так медленно работает при работе с изображениями внутри блока?
О, это хорошее объяснение. Никогда не думал о необходимости переключиться на основную нить. Спасибо. Является ли метод, предложенный вами асинхронным? – friendq
@friendq Да, это асинхронный –