3

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、同様に使用できます。

4

1 に答える 1