Quelle est la différence entre timeoutIntervalForRequest timeoutIntervalForResource
PHPz
PHPz 2017-05-02 09:38:08
0
1
1856

Il existe deux paramètres de délai d'attente dans NSURLSessionConfiguration, l'un s'appelle timeoutIntervalForRequest et l'autre est timeoutIntervalForResource. Quelle est la différence entre les deux ? Dans quelles circonstances est-il généralement fixé ?

PHPz
PHPz

学习是最好的投资!

répondre à tous(1)
给我你的怀抱

Le texte suivant : reportez-vous à ici
timeoutIntervalForRequest et timeoutIntervalForResource spécifient l'intervalle de délai d'attente pour la requête et la ressource. De nombreux développeurs essaient d'utiliser timeoutInterval pour limiter le temps total d'envoi d'une requête, mais cela ne comprend pas la signification de timeoutInterval : le temps entre les messages. timeoutIntervalForResource fournit en fait la fonctionnalité d'un délai d'attente global, qui ne doit être utilisé que pour les transferts en arrière-plan, et non pour tout ce que l'utilisateur pourrait réellement vouloir attendre.

Testez et comprenez-vous

Dans certaines circonstances (timeoutInterval, timeoutIntervalForResource, timeoutIntervalForRequest), ces trois valeurs peuvent déclencher l'expiration du délai d'attente de la demande.

Cela peut être compris dans deux situations, à savoir si timeoutInterval est défini pour NSURLReaqust.

1. Si NSURLRequest timeoutInterval est défini :
Ignorez le paramètre timeoutIntervalForRequest et utilisez la valeur la plus petite de timeoutIntervalForResource et timeoutInterval comme délai d'expiration.

2. NSURLRequest timeoutInterval n'est pas défini :
La plus petite valeur de timeoutIntervalForRequest et timeoutIntervalForResource est le délai d'expiration, qui n'est pas la valeur par défaut de 60 s de Request timeoutInterval.

Ni NSURLRequest ni SessionConfiguration ne sont définis pour utiliser la valeur par défaut d'un délai d'attente de 60 s.

Le téléchargement et le téléchargement en mode session en arrière-plan ignorent les paramètres de timeoutIntervalForRequest et timeoutInterval
Utiliser timeoutIntervalForResource

NSURLRequest
timeoutInterval-(par défaut 60s)

SessionConfiguration
timeoutIntervalForRequest- (par défaut 60 s)
timeoutIntervalForResource- (par défaut 7 jours)

@property NSTimeInterval timeoutIntervalForRequest;
Description
L'intervalle de délai d'expiration à utiliser lors de l'attente de données supplémentaires.
Cette propriété détermine l'intervalle d'expiration des requêtes pour toutes les tâches des sessions en fonction de cette configuration. en secondes), une tâche doit attendre l'arrivée de données supplémentaires avant d'abandonner. Le minuteur associé à cette valeur est réinitialisé chaque fois que de nouvelles données arrivent. Lorsque le minuteur de requête atteint l'intervalle spécifié sans recevoir de nouvelles données, il déclenche un délai d'attente.
La valeur par défaut est 60.
Important
Toutes les tâches de téléchargement ou de téléchargement créées par une session en arrière-plan sont automatiquement réessayées si la demande d'origine échoue en raison d'un délai d'attente. Pour configurer la durée pendant laquelle une tâche de téléchargement ou de téléchargement doit être autorisée. être réessayé ou transféré, utilisez la propriété timeoutIntervalForResource.
DisponibilitéiOS (7.0 et versions ultérieures), macOS (10.9 et versions ultérieures), tvOS (9.0 et versions ultérieures), watchOS (2.0 et versions ultérieures)

@property NSTimeInterval timeoutIntervalForResource;
Description
La durée maximale qu'une demande de ressource doit être autorisée à prendre.
Cette propriété détermine l'intervalle d'expiration des ressources pour toutes les tâches au sein des sessions en fonction de cette configuration. L'intervalle d'expiration de la ressource contrôle la durée (en secondes) d'attente pour le transfert d'une ressource entière avant d'abandonner. Le minuteur de ressources démarre lorsque la requête est lancée et compte jusqu'à ce que la requête se termine ou que cet intervalle de délai soit atteint, selon la première éventualité.
La valeur par défaut est de 7 jours.
DisponibilitéiOS (7.0 et versions ultérieures), macOS (10.9 et versions ultérieures), tvOS (9.0 et versions ultérieures), watchOS (2.0 et versions ultérieures)

@property NSTimeInterval timeoutInterval;
Description
L'intervalle de délai d'attente du récepteur, en secondes.
Si lors d'une tentative de connexion, la requête reste inactive plus longtemps que l'intervalle d'expiration, la requête est considérée comme ayant expiré. . L'intervalle de délai d'attente par défaut est de 60 secondes.
En règle générale, vous ne devez pas utiliser d'intervalles d'expiration courts. Au lieu de cela, vous devez fournir à l’utilisateur un moyen simple d’annuler une opération de longue durée. Pour plus d'informations, lisez Conception pour des réseaux du monde réel dans Présentation des réseaux.
DisponibilitéiOS (8.0 et versions ultérieures), macOS (10.10 et versions ultérieures), tvOS (9.0 et versions ultérieures), watchOS (2.0 et versions ultérieures)

Il s'agit d'un timeoutIntervalForRequest avec NSURLRequest timeoutInterval单个请求设置超时时间)

特殊情况下(session en arrière-plan模式下上传、下载)设置timeoutIntervalForResource

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal