조앤의 기술블로그

[iOS] Network Overview 본문

Study/iOS

[iOS] Network Overview

쬬앤 2020. 4. 9. 11:09

 

 

guard let url = URL(string: picUrlStr) else {
	fatalError("Invalid URL")
}

do {
	let data = try Data(contentsOf: url)
    imageView.image = UIImage(data: data)
} catch {
	print(error)
}

네트워크 코드는 이런 식으로 구현하지 않는다. 

메인스레드에서 실행. 메인스레드가 다른 기능을 실행하지 못한다. 

모든 네트워크 코드는 백그라운드 스레드에서 실행해야 한다. 

이 코드는 동기 API인데 네트워크 코드는 반드시 비동기 API로 해야한다. 

 

 

밑에 부분을 삭제하고, 

let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
	if let error = error {
    	print(error)
    } else if let data = data {
    	let image = UIImage(data: data)
        DispatchQueue.main.async {
        	self.imageView.image = image
        }
    }
}
task.resume()

이런 방식으로 코드를 작성해야 한다. 

앞의 코드와 실행 결과는 똑같지만 메인스레드가 블로킹되지 않는다. 

 

 

출처, 코드 인용 : KxCoding.com - Mastering iOS 강의

https://kxcoding.com

 

여러분의 새로운 도전을 응원합니다 | KxCoding

Mastering SwiftUI 더 적은 코드로, 더 멋진 UI 만들기

kxcoding.com

 

'Study > iOS' 카테고리의 다른 글

[iOS] Delegate Pattern  (0) 2020.04.14
[오픈소스] FSCalendar 소개  (0) 2020.02.16