Quand une réponse NSURL n'est pas une réponse NSHTTPURL?

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 }