由于NSCache是一个黑盒子,如:
1)由于内存压力而移除对象时,不会发送系统通知。
2)操作系统不会清除缓存,但在达到内存阈值后会逐个删除缓存。
有没有更好的方法来检查缓存的对象是否仍然存在,而不是检查它是否为空如下:
NSArray *array = [[MyCache sharedCache] someArray];
if (array.count > 0)
{
//you're ok
}
else
{
[self repopulateCache];
}
答案 0 :(得分:2)
MyCache是否是您创建的课程?使用NSCache,您可以使用objectForKey
检查是否仍有某些内容。
答案 1 :(得分:1)
使用:
if ([[ImageCache sharedImageCache] DoesExist:imageName] == YES)
{
image = [[ImageCache sharedImageCache] GetImage:imageName];
}
else if([[ImageCache sharedImageCache] DoesExist:imageName] == NO)
{
// for adding into cache
[[ImageCache sharedImageCache] AddImage:imageName :image]
//here image name is key , and image is object (UIImage ) value
// Here we we use key value pairs for saving data in cache
}
你必须在缓存的类中创建这里使用的方法,如下所示:
- (void) AddImage:(NSString *)imageName :(UIImage *)image
{
[imgCache setObject:image forKey:imageName];
}
- (NSString*) GetImage:(NSString *)imageName
{
return [imgCache objectForKey:imageName];
}
- (BOOL) DoesExist:(NSString *)imageName
{
if ([imgCache objectForKey:imageName] == nil)
{
return false ;
}
return true;
}