Snappy 1.1.0

Snappy 1.1.0

测试已测试
Lang语言 CC
许可证 MIT
发布上次发布2014年12月

未指明维护。



Snappy 1.1.0

  • 作者:
  • Mathieu D'Amours

Snappy-ObjC

Google 的 Snappy 压缩功能作为 NSData/NSString 分类。您需要了解的所有内容以使用它

#import "Snappy-ObjC.h"
NSData *someCompressedData = [NSData dataWithContentsOfURL:somewhereOnDiskWhereThereIsCompressedData];
NSData *uncompressedData = [someCompressedData snappy_decompressedData];
NSData *backToCompressedData = [uncompressedData snappy_compressedData];
NSAssert([backToCompressedData isEqualToData:someCompressedData], @"IT SHOULD HAVE BEEN EQUAL!");

// It works with NSString (UTF8 only) too!
NSString *imGoingToGetShrinked = @"Hello, World!";
NSData *shrinked = [imGoingToGetShrinked snappy_compressedString];
NSString *imBackAsAWhole = [shrinked snappy_decompressedString];
NSAssert([imGoingToGetShrinked isEqualToString:imBackAsAWhole], @"IT SHOULD HAVE BEEN EQUAL!");

它使用 snappy-c,这是一个 C 语言版本的 Google 的 Snappy 压缩库(最初是用 C++ 编写的)。它表现相当不错,通过放弃一些压缩比例来实现。用他们自己的话说

Snappy 是一个压缩/解压库。它不追求最大压缩或与任何其他压缩库兼容;相反,它追求高速度和合理的压缩。例如,与 zlib 的最快模式相比,Snappy 对大多数输入来说要快一个数量级,但产生的压缩文件大小在 20% 到 100% 之间。在 64 位模式下,单核 Core i7 处理器上,Snappy 的压缩速度约为 250 MB/sec 或更多,解压速度约为 500 MB/sec 或更多。

安装

使用 CocoaPods(您应该使用它),只需添加一行代码 pod 'Snappy' 并进行压缩。

方法前缀

如果您想在所有方法名前去掉 snappy_* 前缀,只需添加一个名为 SNAPPY_NO_PREFIX 的预处理器宏。

如果您正在使用 cocoapods,这表示在您的 "Pods" Xcode 项目中的 Pods-Snappy 目标中,找到其 "构建设置",寻找 "预处理器宏" 设置,并添加上述宏。请注意,您必须在每次运行 cocoaPod 后(每次您在项目文件夹中输入 pod [something] 时)这样做,因为 cocoaPod 在运行时覆盖了该设置。未来会有一个修复这个问题的方法 (某时)。同时,您可以添加以下代码到项目 Podfile 中

post_install do |rep|
  rep.project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ''
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] <<= " SNAPPY_NO_PREFIX=1"
    end
  end
end

测试

该项目包括一个(简单的)测试套件。

  1. 克隆仓库
  2. 进入 Tests/
  3. pod install
  4. 打开 Snappy-ObjC.xcworkspace 并运行测试

许可证

MIT许可证 (MIT)

版权所有 © 2013 Mathieu D'Amours

特此授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的个人以免费处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再授权及/或出售软件副本的权利,并可允许被软件提供人据此进行上述行为,但需遵守以下条件

上述版权声明和本许可声明应包含在软件的所有复制品或实质性部分的副本中。

软件按“现状”提供,不提供任何明示或暗示的担保,包括但不限于适销性、适用于特定目的和不侵权担保。在任何情况下,作者或版权所有者都对因软件或软件的使用或其他方式引起的索赔、损害或其他责任不承担责任,无论其是因合同行为、侵权行为或其他行为而产生的。