J'ai vu beaucoup de code, y compris l'exemple SimpleURLConnections d'Apple, qui a simplement cast n'importe quelle réponse de NSURLResponse à NSHTTPURLResponse. Si c'est toujours une réponse NSHTTPURLResponse, pourquoi NSURLConnections ne renvoie pas NSHTTPURLResponse?
Je suis inquiet que si je baisse simplement la réponse, je présente le code buggy.
Par exemple, est-ce OK de le faire sans vérifier isKindOfClass?
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)redirectResponse; // do stuff }
C'est ok si vous êtes sûr que votre connection fonctionne via le protocole HTTP:
Un object NSHTTPURLResponse représente une réponse à une request de chargement d'URL HTTP. C'est une sous-class de NSURLResponse qui fournit des methods pour accéder aux informations spécifiques aux réponses de protocole HTTP.
Si vous vous connectez via FTP, par exemple, l' NSURLResponse
de NSHTTPURLResponse
à NSHTTPURLResponse
sera incorrect.
La façon la plus sûre de le faire est avec l'introspection.
if ([response isKindOfClass:[NSHTTPURLResponse class]]) { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)redirectResponse; // do stuff }