Download Task는 DataTask와 다르게 데이터를 메모리가 아닌 물리 디스크에 직접 저장하는 방식이다.
https://developer.apple.com/documentation/foundation/urlsessiondownloaddelegate
DataTask Delegate에서는 didReceive 델리게이트 메소드에서 response를 받고 태스크를 시작하고
dedReceive data에서 데이터를 패킷으로 분할해서 전송
didCompleteWithError에서 error가 nil일때 정상적으로 태스크를 완료 한다.
다운로드 테스크가 진행되는 동안
didWriteData로 다운로드 된 데이터가 해당 메소드가 반복적으로 호출될때마다 전달된다.
totalBytesWritten는 로 누적된 데이터
totalBytesExpectedToWrite는 예상되는 전체 데이터이다.
다운로드가 완료되면 우선 didFinishDownloadingTo 델리게이트를 호출하고, 다운로드 로케이션을 전달한다.
그리고 didCompleteWithError를 통해 다운로드 테스크를 완료한다.
URLSessionDownloadTask는 Cancel, Pasue, Resume 를 수행할 수 있다.
cancel 메소드는 두가지 형태로