[iOS-Foundation] NSURLSessionTask
NSURLSession
대상을 통해 다양한 종류의task를 만들 수 있습니다.NSURLSessionTask 클래스는 서로 다른 모든 task 클래스의 기본 클래스로, 하위 클래스는 NSURLSessionDataTask
NSURLSessionUploadTask
10NSURLSessionDownloadTask
1010NSURLSessionStreamTask
을 포함합니다.NSURLSessionDataTask
은 응답 내용을 NSData
대상의 형식으로 되돌려주며 백그라운드 세션에 사용할 수 없습니다.NSURLSessionUploadTask
은 NSURLSessionDataTask
의 하위 클래스로 응답 내용을 NSData
대상의 형식으로 되돌려줍니다. 에이전트를 통해 요청할 때 업로드하는 과정을 볼 수 있고 이task는background session에 사용할 수 있습니다.NSURLSessionDownloadTask
은 자원을 파일로 하드디스크에 다운로드하는데session 형식의 제한이 없다.NSURLSessionStreamTask
은 TCP/IP 접속 구성을 제공합니다.task 상태 제어
task의 현재 상태는 열거 유형
NSURLSessionTaskState
의 속성state로 표시되며 다음과 같은 몇 가지 가능한 값을 포함합니다.typedef NS_ENUM(NSInteger, NSURLSessionTaskState) {
NSURLSessionTaskStateRunning = 0,
NSURLSessionTaskStateSuspended = 1,
NSURLSessionTaskStateCanceling = 2, /* task cancel , , - URLSession:task:didCompleteWithError: */
NSURLSessionTaskStateCompleted = 3, /* */
};
NSURLSession
을 통해 만든task는 기본적으로suspended이고 - resume
방법을 호출하면task의 상태는running으로 바뀐다.- suspend
방법으로task를 다시 마운트 상태로 바꿀 수 있으며, 런닝 상태를 회복할 때downloadtask는 중단된 곳에서 계속 전송할 수 있으며, 다른task는 다시 시작해야 한다.- cancel
방법을 호출한 후task는canceling 상태로 변하고delegate에 보내는 URLSession:task:didCompleteWithError:
메시지에서 error 파라미터의domain은 NSURLErrorDomain
,code는 NSURLErrorCancelled
이다.관련 정보
originalRequest
,task를 만들 때 대응하는 요청 대상입니다.currentRequest
은 응답이 다른 URL로 리디렉션될 때 변경됩니다.response
, 서버에서 되돌아오는 NSURLResponse
대상.taskIdentifier
NSUInteger
유형,task는session에 있는 유일한 표지입니다.error
, 퀘스트가 실패할 때의 NSError
대상.taskDescription
, 퀘스트에 읽을 수 있는 설명을 설정하여 인터페이스 전시가 필요할 때 사용할 수 있습니다.진행 정보
countOfBytesExpectedToSend
, 요청체의 바이트 수, 시스템은 헤더의 Content-Length 필드 또는 요청체로서의 NSData
또는 파일의 크기에 따라 이 값을 설정합니다.countOfBytesSent
, 발송된 요청체 바이트 수, 이 값이 변경되면 프록시 방법 -URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:
countOfBytesExpectedToReceive
, 응답체가 원하는 바이트 수, 응답 헤더의 Content-Length 필드에 따라 명시되지 않으면 NSURLSessionTransferSizeUnknown
(-1) countOfBytesReceived
, 이미 받은 응답체 바이트 수, 이 값이 변하면 프록시 방법 - URLSession:dataTask:didReceiveData:
또는 URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:
우선 순위
task는
priority
속성이 있는데 0에서 1 사이의 부동점수를 받아들인다. 각task의 서로 다른 priority 값을 통해 시스템task가 실행하는 우선순위를 알릴 수 있다. 1이 가장 높고 0이 가장 낮다.기본값은 NSURLSessionTaskPriorityDefault
, 즉 0.5입니다.시스템은 3개의 상수 값을 제공합니다.NSURLSessionTaskPriorityDefault //0.5
NSURLSessionTaskPriorityLow // 0
NSURLSessionTaskPriorityHigh // 1
Task 하위 클래스
NSURLSessionDataTask
과 NSURLSessionUploadTask
은 더 이상 별도의 방법을 실현하지 않고 서로 다른task를 구분하는 데 사용되었다.한편, NSURLSessionDownloadTask
은task를 구분하는 방법 외에도 - cancelByProducingResumeData:
을 추가로 실현했다. 이 방법은 기류 NSURLSessionTask
의 - cancel
방법을 호출했고 매개 변수completionHandler는 Block을 전송하여 전송된 데이터를 처리하는 데 사용했다. 이resume 데이터는 앞으로session의 - downloadTaskWithResumeData:
방법으로 다운로드를 계속 중단할 수 있도록 사용할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.