Gzip is a popular method of compressing files for faster network transfers. But not many are aware that it can be implemented on iOS apps too. Here’s how it works and how to optimize iOS app performance using GZIP.
Contents
Supported OS & SDK Versions
- Supported build target – iOS 8.4/MacOS 10.10 (Xcode 6.4, Apple LLVM compiler 6.1)
- Earliest supported deployment target – iOS 7.0/MacOS 10.9
- Earliest compatible deployment target – iOS 4.3/MacOS 10.6
ARC Compatibility
The GZIP category will work correctly in either ARC or non-ARC projects without modification.
Thread Safety
All the GZIP methods are thread safe. Hence, it’s easy to say that these methods can be called from multiple threads concurrently.
Installation
It’s pretty easy. Just drag the category files (test files & assets not needed) into your project & import the header file into any class where you wish to use the GZIP functionality. No need to include the libz.dylib, as GZIP locates it automatically at runtime.
NSData Extensions
- (NSData *)gzippedDataWithCompressionLevel:(float)level;
In this method, the compression level is a floating point value between 0.0 & 1.0. In case a negative value is supplied, the default compression level is around 0.7.
- (NSData *)gzippedData;
This is equivalent to calling gzippedDataWithCompressionLeve
- (NSData *)gunzippedData;
It unzips the compressed data using deflate algorithm & returns the output.
- (BOOL)isGzippedData;
This method returns ‘Yes’ if the data is gzip-encoded.
Biggest Advantage:
Quick upload/download of data from server to client & vice versa.
Have you used GZIP Compression before? Did I leave anything out? Share your experiences/feedback/suggestions below.