PINCache 3.0.4

PINCache 3.0.4

测试已测试
语言语言 Obj-CObjective C
许可证 Apache-2.0
发布上次发布2024 年 5 月

Garrett MoonPinterest BotGarrett MoonRicky Cancro 维护。



PINCache 3.0.4

  • Garrett Moon 和 Justin Ouellette

PINCache

CocoaPods Carthage compatible Build status

适用于 iOS 和 OS X 的快速、非死锁并行对象缓存。

PINCache 是基于 TMCache 的分支,重新设计以修复由高频率使用引起死锁的问题。它是一个用于持久化成本高昂的、难以重新生成的临时对象的键/值存储工具,例如下载的数据或慢速处理的结果。它由两个自相似存储组成,一个在内存中(PINMemoryCache)和一个在磁盘上(PINDiskCache),所有这些都由 GCD 支持,并允许多线程同时安全访问。在 iOS 上,PINMemoryCache 在应用程序收到内存警告或进入后台时将自行清除。存储在 PINDiskCache 中的对象将一直保留,直到您手动或通过设置字节或年龄限制来修剪缓存。

PINCachePINDiskCache 接受任何符合 NSCoding 协议的对象。放入的方式如下

Objective-C

UIImage *img = [[UIImage alloc] initWithData:data scale:[[UIScreen mainScreen] scale]];
[[PINCache sharedCache] setObject:img forKey:@"image" block:nil]; // returns immediately

Swift

let img = UIImage(data: data, scale:UIScreen.main.scale)
PINCache.shared().setObject(img, forKey: "img")

以这种方式取出

Objective-C

[[PINCache sharedCache] objectForKeyAsync:@"image" block:^(PINCache *cache, NSString *key, id object) {
    UIImage *image = (UIImage *)object;
    NSLog(@"image scale: %f", image.scale);
}];

Swift

PINCache.shared().object(forKey: "image") { (cache, key, object) in
    if let image = object as? UIImage {
        print("image scale: %f", image.scale)
    }
}

Both PINMemoryCachePINDiskCache 使用锁来保护读写操作。PINCache 协调它们,以便将对象添加到内存中的同时,背景中安全地将其写入磁盘。这两个缓存都是 PINCache 的公共属性,因此如果需要,可以轻松单独操作一个或另一个。

集合也适用。多亏了NSKeyedArchiver的魔法,集合中重复的对象只有其中一个在磁盘上占用空间

Objective-C

NSArray *images = @[ image, image, image ];
[[PINCache sharedCache] setObject:images forKey:@"images"];
NSLog(@"3 for the price of 1: %d", [[[PINCache sharedCache] diskCache] byteCount]);

Swift

// In Swift, Array, String, and Dictionary are all value types.
let images = [image, image, image] as NSArray // Cast to NSArray
PINCache.shared.setObject(images, forKey: "images")
print("3 for the prices of 1: %d", PINCache.shared.diskCache.byteCount)

安装

手动

下载最新的标签链接,并将PINCache文件夹拖入你的Xcode项目。

通过双击docs/下方的.docset文件来安装文档,或在cocoadocs.org上在线查看。

Git子模块

git submodule add https://github.com/pinterest/PINCache.git
git submodule update --init

CocoaPods

PINCache添加到你的Podfile中,然后运行pod install

Carthage

将以下行添加到你的Cartfile中,并运行carthage update --platform ios。然后按照Carthage的这些说明嵌入框架。

github "pinterest/PINCache"

要求

PINCache 需要 iOS 8.0、tvOS 9.0、watchOS 2.0 或 macOS 10.8 及以上版本。

联系

Garrett Moon

许可证

版权所有 2013 Tumblr, Inc. 版权所有 2015 Pinterest, Inc.

根据 Apache License, Version 2.0(“许可证”);除适用法律要求或书面同意外,未经许可证不得使用本文件。您可以在 http://www.apache.org/licenses/LICENSE-2.0 获取许可证的副本

除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样” basis 分发,不提供任何明示或暗示的保证或条件。请参阅许可证 了解许可下权限和限制的特定语言。