여러개의 작업이 동시에 일어나는 것처럼 보이게 하는 것.
작업들이 순서에 상관없이 동시에 수행될 수 있음을 의미함
ex) 밥을 먹으면서 공부도 할 경우.. 완전히 동시는 아니지만 일을 잘게 쪼개서 번갈아가며 수행함.
컴퓨터가 요청된 작업들을 수행할 때, 작업들이 실행되는 공간이다. (각 작업이 수행되는 방)
메인 스레드 : 화면에 표시하거나 사용자 인터렉션을 받는 작업을 수행한다. 화면에 그려주는 일.
데이터를 화면에 보여주거나, 버튼 클릭 이벤트 감지하고 처리..
백그라운드 스레드 : 메인스레드에서 하는 작업 외에 것들.
네트워크에서 데이터를 다운받거나 디비에서 데이터 읽어오는 것...
커스텀 스레드: 지정된 스레드를 통해 작업할 때 사용한다.
카메라 통해 들어온 영상데이터 가공, 오디오 데이터 변조...
실제 네트워크에서는 메인 스레드에서 HTTP 요청을 보내서 네트워크의 HTTP 응답을 받아서 화면에 표시해준다.
서버와 대화하는 방식, 통신 규약이다. 데이터 요청하고 응답받는 것.
URL을 통해 데이터를 요청하는데, URL은 서버에 데이터를 요청하기 위해 입력하는 영문 주소이다.
URL구조 => http protocol + www...이런 도메인 + port + resource path + query
요청 메서드 - get post put delete
데이터 응답 - status code 결과를 코드로 간략하게 나타낸 값, body 요청한 데이터들.. JSON, Image
=> 요청 시에 URL과 Request Method가 필요하다.
응답 시에는 status code와 response body(JSON)으로 처리한다.
http 방식으로 네트워크하는데, URLSession이 네트워크 작업을 도와준다.
그렇게 생성된 urlSession이 실제 네트워크 작업들을 생성할 수 있다.
URLSessionTask는 urlsession이 만들어 낸 네트워크 작업이다.
URLSession은 생성할때 configuration(= 설정값) =>
.default - 단순한 네트워크 작업, 브라우저 띄울 때, 데이터 요청할 때 등 대부분의 작업 ,
.ephemeral - 몇가지 정보들을 저장하지 않음(쿠키나 인증서),브라우저 시크릿모드라고 생각. 개인정보 보호
.background - 파일 다운로드 받을 때, 앱이 백그라운드에 있을 때도 돌아야하기 때문에.
URLSession - configuration 보고 세션을 생성함
URLSessionTask -
dataTask- 데이터 받아오는 작업, 데이터 요청한 것 받아서 스위프트 객체만들어서 앱내에서 가공해서 쓰게 된다. (모델)
uploadTask- 가지고 있는 데이터를 서버에 올리는 작업,
downloadTask- 받아온 것 다운로드
task는 urlsession이 만든 작업
urlsessionDataTask에 대해 publisher를 제공한다. => 비동기 응답에 대한 작업이 수월해짐