NSURLSession délégué vs completionHandler
J'ai toujours utilisé l'achèvement des gestionnaires. Avec NSURLConnection
et maintenant avec NSURLSession
. Il est mené à mon code étant vraiment en désordre, surtout que j'ai demande dans la demande dans la demande.
J'ai voulu essayer à l'aide de délégués dans NSURLSession
de mettre en œuvre quelque chose que j'ai fait untidily avec NSURLConnection
.
J'ai donc créé un NSURLSession
, et créé un dataTask
:
NSURLSessionDataTask *dataTask = [overallSession dataTaskWithURL:url
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if(error == nil)
{
NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog(@"Data = %@",text);
}
}];
[dataTask resume];
Droit maintenant, j'ai un completionHandler
pour la réponse, comment pourrais-je passer à les délégués à gérer la réponse et les données? Et puis-je ajouter un autre dataTask
par le délégué de celui-ci? En utilisant les cookies que cette dataTask
créé et placé dans la session?
Vous devez vous connecter pour publier un commentaire.
Si vous voulez ajouter un délégué de classe, vous avez besoin pour mettre en œuvre les
NSURLSessionDataDelegate
etNSURLSessionTaskDelegate
protocoles au minimum.Avec les méthodes:
NSURLSessionDataDelegate - en continu le statut de votre demande
NSURLSessionDataDelegate
NSURLSessionTaskDelegate
Si vous voulez séparer le délégué de code (couche du milieu) de votre classe d'appel (de manière générale, les bonnes pratiques à avoir séparé la classe/de la couche pour les appels réseau), le délégué de NSURLSession doit être :-
Ref Liens: