TMCache并行对象缓存

联合创作 · 2023-09-29 06:28

TMCache是一个键/值存储,用于持久存储那些复制成本很高的临时对象,例如下载的数据或处理缓慢的结果。它由两个自相似的存储组成,一个在内存中(TMMemoryCache),一个在磁盘上(TMDiskCache),它们均由GCD支持,并且可以安全地同时从多个线程进行访问。在iOS上,TMMemoryCache当应用收到内存警告或进入后台时,它将清除自身。存储的对象将TMDiskCache保留,直到手动修剪或设置字节数或期限限制来自己调整缓存为止。

TMCacheTMDiskCache接受任何符合NSCoding的对象。像这样放东西:

UIImage * img = [[UIImage alloc ] initWithData:数据比例: [[UIScreen mainScreen ] 比例 ]];
[[TMCache sharedCache ] setObject: img forKey:@“ image  块: ]; //立即返回

像这样使它们退回:

[[[TMCache sharedCache ] objectForKey:@“ image 
                              块: ^(TMCache * cache,NSString * key,id对象){
                                  UIImage * image =(UIImage *)对象;
                                  NSLog@“ image scale:%f image。scale);
                              }];

TMMemoryCache允许并发读取和序列化写入,同时TMDiskCache对应用程序中所有实例之间的磁盘访问进行序列化以提高性能并防止文件争用。TMCache协调它们,以便添加到内存中的对象可以立即被其他线程使用,同时在后台安全地写入磁盘。这两个缓存都是的公共属性TMCache,因此在必要时可以很容易地分别操作一个或另一个。

收藏也可以。多亏了的魔力NSKeyedArchiver,集合中重复的对象仅占据磁盘上一个对象的空间:

NSArray * images = @ [image,image,image];
[[TMCache sharedCache ] setObject: images forKey:@“ images  ];
NSLog@: 3,价格为1:%d ,[[[[TMCacheCache sharedCache ] diskCache ] byteCount ]);
浏览 8
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报