检查是否已从NSCache中删除对象的最佳方法?

时间:2014-02-03 00:39:53

标签: ios iphone cocoa-touch nscache

由于NSCache是​​一个黑盒子,如:

1)由于内存压力而移除对象时,不会发送系统通知。

2)操作系统不会清除缓存,但在达到内存阈值后会逐个删除缓存。

有没有更好的方法来检查缓存的对象是否仍然存在,而不是检查它是否为空如下:

NSArray *array = [[MyCache sharedCache] someArray];
if (array.count > 0)
{
  //you're ok
}
else
{
  [self repopulateCache];
}

2 个答案:

答案 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;

}