La Compression de l'API sur l'iPhone
Est-il une compression API disponible pour une utilisation sur l'iPhone? Nous sommes à construire des services web RESTful pour notre application iPhone pour parler, mais nous voulons compresser au moins certains des conversations à des fins d'efficacité.
Je n'aime pas ce que le format ZIP, LHA, peu importe) est, et il n'a pas besoin d'être sécurisé.
Certains répondants ont souligné que le serveur peut compresser sa sortie, l'iPhone peut consommer que. Le scénario est exactement l'inverse. Nous allons afficher un contenu compressé à le service web. Nous ne sommes pas concernés par la compression dans l'autre sens.
Vous devez vous connecter pour publier un commentaire.
zlib et bzip2 sont disponibles. Et vous pouvez toujours en ajouter d'autres, aussi longtemps qu'ils vous (en général) compiler sous OS X.
bzip2 est un meilleur choix pour les plus petites tailles de fichier, mais exige beaucoup plus de puissance CPU pour compresser et décompresser.
Aussi, puisque vous parlez à un service web, vous pourriez ne pas avoir à faire beaucoup. NSURLRequest accepte l'encodage gzip de manière transparente dans les réponses du serveur.
D'Apple dans libcompression est maintenant disponible pour iOS 9. Un court exemple de la compression_encode_buffer est indiqué ci-dessous pour la compression NSData.
Un certain nombre de différents algorithmes sont disponibles:
Bloc de compression ou compression de flux sont tous deux pris en charge.
Voir https://developer.apple.com/library/mac/documentation/Performance/Reference/Compression/
Si vous avez uniquement les données compressées et de savoir la taille non compressée, vous pouvez utiliser:
Je crois zlib est disponible sur le téléphone.
confiance en moi, le meilleur choix est d'utiliser ZipArchive voir: Comment décompresser un AES-256 fichier Zip crypté?
prêt pour obtenir de l'aide si nécessaire.
Objectif-Zip est une autre option. Voir ces excellents instructions.
Note que j'ai eu à convertir le code source pour l'utilisation de l'ARC en utilisant XCode->Edit>Refactor->Convertir en Objective-C d'ARC.
NSURL dit qu'il prend en charge l'encodage gzip de sorte que vous ne devriez pas avoir à faire quelque chose de plus que votre service web RESTful retour gzip contenu encodé le cas échéant. Tous le décodage se fait sous les couvertures.
NSMutableURLRequest *req; [req setHTTPMethod:@"POST"];