CBHCompressKit
CBHCompressKit 提供了 CBHCompressor
和 CBHDecompressor
,它们提供了压缩 NSData
的简单方法。它们支持单次调用和流压缩。此外,CBHCompressKit 提供了一个 NSData
分类,以使单次调用压缩更加简单。
支持的算法
- LZ4:一种高速压缩算法。
- LZMA:一种具有高压缩比率的算法。
- ZLib:一种平衡的平台间压缩算法格式。
- LZFSE:一种平衡的、仅适用于 Apple 的压缩算法。
使用
大多数用例只需要使用 NSData
分类。
示例
使用 LZ4 压缩 NSData
NSData *data = /* some data */
NSData *compressed = [data compressUsingLZ4];
使用 LZ4 解压缩 NSData
NSData *compressed = /* some compressed data */
NSData *data = [compressed decompressUsingLZ4];
使用 LZMA 压缩 NSData
NSData *data = /* some data */
NSData *compressed = [data compressUsingLZMA];
使用 LZMA 解压缩 NSData
NSData *compressed = /* some compressed data */
NSData *data = [compressed decompressUsingLZMA];
使用 ZLib 压缩 NSData
NSData *data = /* some data */
NSData *compressed = [data compressUsingZLib];
使用 ZLib 解压缩 NSData
NSData *compressed = /* some compressed data */
NSData *data = [compressed decompressUsingZLib];
使用 LZFSE 压缩 NSData
NSData *data = /* some data */
NSData *compressed = [data compressUsingLZFSE];
使用 LZFSE 解压缩 NSData
NSData *compressed = /* some compressed data */
NSData *data = [compressed decompressUsingLZFSE];
更复杂的示例,例如使用流。
示例
压缩流
id io = /* an object that returns data in chunks */
CBHCompressAlgorithm algorithm = CBHCompressAlgorithm_LZMA;
NSData *compressed = [CBHCompressor compressUsingAlgorithm:algorithm inBlock:^(CBHCompressor *compressor) {
while ( [io hasMoreData] )
{
[compressor appendData:[io data]];
}
}];
解压缩流
id io = /* an object that returns data in chunks */
CBHCompressAlgorithm algorithm = CBHCompressAlgorithm_LZMA;
NSData *decompressed = [CBHDecompressor decompressUsingAlgorithm:algorithm inBlock:^(CBHDecompressor *decompressor) {
while ( [io hasMoreData] )
{
[decompressor appendData:[io data]];
}
}];
许可
CBHCompressKit可在ISC许可下使用。