iOS 8 でのみ発生する問題に遭遇しました。 を使用しNSCache
て画像を保存しました。メモリ警告を受け取った後、画像を取得してキャッシュに再度保存します。ただし、警告の後、キャッシュに画像を保存できなくなりました。を使用すると、常に nil が返されますobjectForKey:
。
ここに私のコードの一部があります:
@interface ViewController ()
{
NSCache *imageCache;
}
@implementation ViewController
- (instancetype)init
{
self = [super init];
if (self) {
imageCache = [[NSCache alloc] init];
[imageCache setTotalCostLimit:1024 * 1024 * 1];
}
return self;
}
- (void)imageDownloadManager:(ImageDownloadManager *)manager didReceiveImage:(UIImage *)image forObjectID:(NSString *)objecID
{
NSUInteger cost = [UIImageJPEGRepresentation(image, 0) length];
image = [image smallImageWithCGSize:kImageThumbSize];
[self.imageCache setObject:image forKey:objectID cost:cost];
NSLog("image: %@",[self.imageCache objectForKey:objectID]); //return nil
}
@end
ありがとう :)
ソリューション
設定するcountLimit
必要があり、値は 0 より大きい必要があります。その後totalCostLimit
、同様に使用できます。