URLSession을 공부하기 전
The URLSession API involves many different classes that work together in a fairly complex way which may not be obvious if you read the reference documentation by itself. Before using the API, read the overview in the URL Loading System topic. The articles in the Essentials, Uploading, and Downloading sections offer examples of performing common tasks with URLSession.
URLSession의 공식 문서 내용입니다.
URLSession은 다양항 클래스로 구성되어 있기 때문에 URLSession 문서만 읽으면 난해하고 어렵다고 합니다.
그래서 URL Loading System를 먼저 읽기를 권장하고 있습니다.
그래서 이번 포스팅에서는 URL Loading System에 대해 알아봅시다.
URLSessionTask와 URLSessionConfiguration에 대해서는 URLSession 포스팅에서 다루겠습니다.
URL Loading System
URL Loading System은 https 같은 표준 프로토콜이나 직접 만든 커스텀 프로토콜을 사용한 URL로 구별되는 리소스에 접근하는 것을 제공합니다.
로딩(Loading)은 비동기적(asynchronously)으로 수행되기 때문에 앱의 응답 속도를 저하시키거나 정지 시키지 않습니다.
또한, 데이터나 오류가 도착하는대로 처리할 수 있습니다.
URLSessionTask 인스턴스는 데이터를 가져와서 앱에 반환하거나 파일을 다운로드하고, 데이터 및 파일을 업로드할 수 있습니다.
URLSession 인스턴스를 통해 URLSessionTask 인스턴스를 여러 개 만들 수 있습니다.
Session을 설정할 때는 URLSessionConfiguration 객체를 사용합니다.
이 객체는 캐시나 쿠키를 어떻게 사용할지, 셀룰러 네트워크 연결을 허용할 것인지 같은 옵션을 구성할 수 있습니다.
Task를 생성하기 위해 하나의 세션을 계속해서 사용하는 것도 가능합니다.
예를 들어, 웹 브라우저에는 Default browsing과 Private browsing을 위한 별도의 세션이 존재하며
Private 브라우징에서는 데이터 캐싱을 이용하지 않습니다.
각 세션은 주기적인 업데이트 또는 오류를 수신하는 delegate와 연결되어 있습니다.
기본 delegate는 개발자가 제공하는 completion handler 블록을 호출하며 Custom delegate는 이 블록이 호출되지 않습니다.
세션은 백그라운드에서 돌아갈 수 있도록 설정할 수 있으며
이 경우 앱이 Suspended 상태에 들어가더라도 시스템이 대신 데이터를 다운로드하고
앱이 깨어난 뒤에 결과를 받을 수 있습니다.
참고
https://developer.apple.com/documentation/foundation/url_loading_system#2927983
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.