(1)NSCach 可以设置最大缓存数据的数量,如果超出该限制那么内部会自动开启一个回收过程把最先存储的数据删除
(2)NSCach 可以设置代理,<NSCachDelegate>,可以监听 内部开启回收过程的时候调用
参考代码如下:
#import "ViewController.h"
@interface ViewController ()<NSCacheDelegate>
@property (nonatomic, strong) NSCache *cache;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (NSCache *)cache {
if (_cache == nil) {
_cache = [[NSCache alloc] init];
_cache.countLimit = 8;
_cache.delegate = self;
}
return _cache;
}
- (IBAction)saveBtnClick:(id)sender {
for (NSInteger i = 0; i < 10; i++) {
NSDictionary *params = @{@"key":@"number", @"value":@(i)};
[self.cache setObject:params forKey:@(i)];
}
}
- (IBAction)getBtnClick:(id)sender {
for (NSInteger i = 0; i < 10; i++) {
NSDictionary *params = [self.cache objectForKey:@(i)];
NSLog(@"----params---%@", params);
}
}
#pragma mark - 代理
- (void)cache:(NSCache *)cache willEvictObject:(id)obj {
NSLog(@"-----开启了回收机制---数据=%@", obj);
}
这个缓存,只限于当前运行的状态数据,如果把app关了重启,那么数据也清了。