2016-10-14 3 views
-2

imageUrls 배열을 사용하여 이미지를 만들지 만 속도가 느린 루프가 있습니다. 속도를 향상시키는 방법이 있습니까?이미지 다운로드 속도 향상 방법

그것은 다음과 같습니다

self.urlArray.forEach() { 
    let photoURL = URL(string: $0) 
    guard let url = photoURL else {continue} 
    let data = try? Data(contentsOf: url) 
    guard let dataSafe = data else {continue} 
    let finishedImage = UIImage(data: dataSafe) 
    self.imagesArray.append(finishedImage) 
} 
+0

영구적 다시 작업 –

+0

는 또한 KingFisher' –

+0

@RajanMaheshwari들 난 그냥 필요의 빠른 UIImages의 배열을 얻을 필요가'확인 전화를받을의 ViewController 때마다 호출 그 이미지를 캐시하지하는 sdWebImage를 사용한다 이 라이브러리들 중 하나 –

답변

0

당신은 다음, 백그라운드 스레드에서 데이터를 가져 메인 스레드에있는 UIImageView를 업데이트 할 수 있습니다.

let photoURL = URL(string: $0) 
guard let url = photoURL else {continue} 
DispatchQueue.global(qos: DispatchQoS.QoSClass.userInitiated).async{ 
    //fetch the image data in background 
    let data = try? Data(contentsOf: url) 
    guard let dataSafe = data else {continue} 
    DispatchQueue.main.sync { 
     //get back to main thread 
     let finishedImage = UIImage(data: dataSafe) 
     self.imagesArray.append(finishedImage) 
    } 
} 
+0

OP가 swift를 사용하고 있습니다. 3. 신속한 3 구문으로 코드 변환 –

+0

@RajanMaheshwari 미안 해요, Objective-C 개발자입니다. 그 신속한 버전의 차이점을 실제로 말해 줄 수는 없습니다. 게다가 원래 코드를 전혀 변경하지 않았으므로 GCD를 추가했습니다. 그들은 GCD의 문법도 바꿨습니까? –

+0

예, GCD의 구문이 변경되었습니다. –