1

NSCache はブラック ボックスであるため、次のようになります。

1) メモリ不足のためにオブジェクトが削除された場合、システム通知は送信されません。

2) キャッシュは、OS によって完全に消去されるのではなく、メモリのしきい値に達した後、オブジェクトごとに削減されます。

次のように空かどうかを確認する以外に、キャッシュされたオブジェクトがまだ存在するかどうかを確認するより良い方法はありますか?

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

2 に答える 2

2

MyCache はあなたが作成したクラスですか? NSCache を使用objectForKeyすると、何かがまだ存在するかどうかを確認できます。

于 2014-02-03T00:56:33.163 に答える
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;

}

于 2014-02-03T07:00:08.037 に答える