찾다

 >  Q&A  >  본문

objective-c - timeoutIntervalForRequest timeoutIntervalForResource 有什么区别

NSURLSessionConfiguration中有两个超时设置,一个叫timeoutIntervalForRequest 另一个是timeoutIntervalForResource,这两个有什么不同?一般在何种情况下设置?

PHPzPHPz2757일 전1775

모든 응답(1)나는 대답할 것이다

  • 给我你的怀抱

    给我你的怀抱2017-05-02 09:40:08

    다음 텍스트: 여기를 참조하세요
    timeoutIntervalForRequest 및 timeoutIntervalForResource는 요청과 리소스에 대한 시간 초과 간격을 지정합니다. 많은 개발자가 timeoutInterval을 사용하여 요청을 보내는 총 시간을 제한하려고 시도하지만 이는 timeoutInterval의 의미, 즉 메시지 사이의 시간을 오해하는 것입니다. timeoutIntervalForResource는 실제로 사용자가 실제로 기다리고 싶어하는 것이 아니라 백그라운드 전송에만 사용해야 하는 전체 시간 초과 기능을 제공합니다.

    자신을 테스트하고 이해하세요

    특정 상황(timeoutInterval, timeoutIntervalForResource, timeoutIntervalForRequest)에서 이 세 가지 값은 요청 시간 초과를 유발할 수 있습니다.

    NSURLReaqust에 timeoutInterval이 설정되어 있는지 여부라는 두 가지 상황으로 이해할 수 있습니다.

    1. NSURLRequest timeoutInterval이 설정된 경우:
    timeoutIntervalForRequest 설정을 무시하고 timeoutIntervalForResource 및 timeoutInterval 중 더 작은 값을 타임아웃 시간으로 사용합니다.

    2. NSURLRequest timeoutInterval이 설정되지 않았습니다.
    timeoutIntervalForRequest 및 timeoutIntervalForResource의 더 작은 값은 요청 timeoutInterval의 기본 60초가 아닌 시간 초과 시간입니다.

    NSURLRequest와 SessionConfiguration 모두 기본값인 60초 시간 제한을 사용하도록 설정되어 있지 않습니다.

    백그라운드 세션 모드에서 업로드 및 다운로드는 timeoutIntervalForRequest 및 timeoutInterval 설정을 무시합니다.
    timeoutIntervalForResource 사용

    NSURLRequest
    timeoutInterval-(기본값 60초)

    SessionConfiguration
    timeoutIntervalForRequest- (기본값 60초)
    timeoutIntervalForResource- (기본값 7일)

    @property NSTimeInterval timeoutIntervalForRequest;
    설명
    추가 데이터를 기다릴 때 사용할 시간 초과 간격입니다.
    이 속성은 이 구성에 따라 세션 내의 모든 작업에 대한 요청 시간 초과 간격을 결정합니다( (초) 작업은 포기하기 전에 추가 데이터가 도착할 때까지 기다려야 합니다. 새 데이터가 도착할 때마다 이 값과 관련된 타이머가 재설정됩니다. 새 데이터를 수신하지 않고 요청 타이머가 지정된 간격에 도달하면 시간 초과가 발생합니다.
    기본값은 60입니다.
    중요
    시간 초과로 인해 원래 요청이 실패하는 경우 백그라운드 세션에서 생성된 모든 업로드 또는 다운로드 작업이 자동으로 재시도됩니다. 재시도하거나 전송하려면 timeoutIntervalForResource 속성을 사용하세요.
    가용성iOS(7.0 이상), macOS(10.9 이상), tvOS(9.0 이상), watchOS(2.0 이상)

    @property NSTimeInterval timeoutIntervalForResource;
    설명
    리소스 요청에 허용되는 최대 시간입니다.
    이 속성은 이 구성을 기반으로 세션 내의 모든 작업에 대한 리소스 시간 초과 간격을 결정합니다. 리소스 시간 초과 간격은 포기하기 전에 전체 리소스가 전송될 때까지 기다리는 시간(초)을 제어합니다. 리소스 타이머는 요청이 시작될 때 시작되고 요청이 완료되거나 이 시간 초과 간격에 도달할 때까지 계산됩니다.
    기본값은 7일입니다.
    가용성iOS(7.0 이상), macOS(10.9) 이상), tvOS(9.0 이상), watchOS(2.0 이상)

    @property NSTimeInterval timeoutInterval;
    설명
    수신자의 시간 초과 간격(초).
    연결 시도 중에 요청이 시간 초과 간격보다 오랫동안 유휴 상태로 유지되면 요청이 시간 초과된 것으로 간주됩니다. . 기본 시간 초과 간격은 60초입니다.
    일반적으로 짧은 시간 초과 간격을 사용하면 안 됩니다. 대신 사용자가 장기 실행 작업을 쉽게 취소할 수 있는 방법을 제공해야 합니다. 자세한 내용은 네트워킹 개요에서 실제 네트워크 설계를 읽어보세요.
    가용성iOS(8.0 이상), macOS(10.10 이상), tvOS(9.0 이상), watchOS(2.0 이상)

    <…时间)

    特殊情况下(백그라운드 세션模式下上传、下载)设置timeoutIntervalForResource

    회신하다
    0
  • 취소회신하다