URLSession 공부의 시작점
iOS 개발 뿐 아니라 많은 서비스 들을 개발하다 보면 네트워크를 다루게 됩니다. 네트워크를 처음 접한 건 라이브러리를 사용해서 입니다. 그런데 구현체가 어떻게 생겼는지 모르고, 네트워크 통신 규약 문서를 볼 수 없는 상태로 사용만 하는 것은 문제가 생겼을 때 해결할 수 없었습니다. 그래서 moya 나 alamofire 과 같은 라이브러리들이 어떻게 구현되어 있는지 그리고 URLSession 은 어떻게 이루어져 있는지 정리하려고 합니다. 동기 비동기 네트워크를 공부하기 전에 동기, 비동기를 먼저 공부하는 걸 추천 드립니다. 왜냐하면 네트워크는 여러가지 요청과 응답이 처리되어야 하는데, 이 작업들이 동기로 처리되어야 하는지 비 동기로 처리되어야 하는지를 판단하거나 이해하지 못하면 전반적인 내용에 대해서 이해하기 어렵습니다. 해당 내용은 여기 에 정리한 적이 있습니다. 네트워크 프로세스 가장 많이 만나는 코드 중 하나를 가지고 예를 들어 보도록 하겠습니다 let urlSession = URLSession(configuration: . default ) // 1. let task = urlSession.dataTask( with : url) { data, response, error in // 2. print(response ?? "no response" ) } task.resume() // 3. URLSession 클래스를 이용해 세션을 하나 만듭니다. 그 세션은 여러가지 일을 할 수 있는데, URLSession에 구현되어있는 메소드로 어떤 일(task)을 추가할 수 있습니다. 그리고 그 일을 하는 task 객체를 반환 합니다. task는 resume() 으로 실행합니다. 그럼 순서대로 알아보도록 하겠습니다. 세션 만들기 URLSession 은 세션을 만든다고 언급했습니다. 그러면 어떻게 만들 수 있을까요? 코드를 살펴보면 init(configuration: URLSessionConfiguration)...