Ei kuvausta

gaosboy 22f17741f3 更新README 12 vuotta sitten
Demo 1dea337c76 更新写入文件方式 12 vuotta sitten
Demo.xcodeproj 926b791ca2 init proj 12 vuotta sitten
Kache 69e9581856 修复归档时无法存入的问题 12 vuotta sitten
.gitignore b9417129f0 Update .gitignore 12 vuotta sitten
README.md 22f17741f3 更新README 12 vuotta sitten

README.md

kache

iOS缓存控件,支持哈希,队列和时间池

使用方法

import Kache的头文件 KCH.h

#import "KCH.h"

Kache的每个实例是一个缓存空间不同的缓存空间互相独立。开发者可以单独初始化Kache实例对象,并指定FileToken作为标记,或直接使用Kache提供的静态方法,操作默认空间。 Kache提供的所有静态方法,都有对应Kache的实例方法。

添加缓存 把ID为“123456”的一个数据“ThisIsADemoData.”存入缓存,1小时候过期。

[Kache setValue:@"ThisIsADemoData" forKey:@"123456" expiredAfter:3600];

取出KEY为“123456”的数据,并打印。

NSString *demoData = [Kache valueForKey:@"123456"];
NSLog(@"Data:%@", demoData);

使用KPool。KPool提供了一个可变大小的缓存池,原理是:当存入Pool中的对象超过配置文件中配置的KACHE_DEFAULT_POOL_SIZE,则最早过期的一个将被清除。自己定义的Pool可以指定这个值。 一个缓存控件内可以使用多个Pool,开发者可以选择自己定义或使用默认的。 读取Pool中的值与普通对象一样。

[Kache setValue:@"PoolValue1" inDefaultPoolForKey:@"key_1_in_pool" expiredAfter:0];

使用KQueue。KQueue提供了一个可变大小的缓存队列。与KPool一样,开发者可以选择使用默认或自定义的。 KQueue中的对象不允许指定过期时间,全部使用默认值,切没有KEY,只能通过push方法存入和pop方法获取。

[Kache pushValue:@"inQueue1"]; // 队列:{"inQueue1"}
[Kache pushValue:@"inQueue2"]; // 队列:{"inQueue1", "inQueue2"}
[Kache pushValue:@"inQueue3"]; // 队列:{"inQueue1", "inQueue2", "inQueue3"}

NSLog(@"%@", [Kache popValue]); // 打印 "inQueue1", 队列:{"inQueue2", "inQueue3"}

调用save方法把缓存空间归档,调用load方法重新载入

[Kache save]; // 归档
[Kache load]; // 重新载入,每次启动自动调用

具体使用方法可参考工程中的Demo,或 iOSSF 项目:https://github.com/gaosboy/iOSSF

配置文件

kache.conf

通过修改配置文件可以改变Kache控件的工作状态

#define     KACHE_DEFAULT_POOL_SIZE     20
#define     KACHE_DEFAULT_QUEUE_SIZE    10

// Default expired time, 10 Days.
#define     KACHE_DEFAULT_LIFE_DURATION 864000

// 把内存归档到磁盘的阈值,单位 byte
#define ARCHIVING_THRESHOLD             50000