NSCache objectForKey:在iOS 8上出现内存警告后总是返回nil

yuhua

我遇到了仅在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

我遇到了同样的问题(并且仅在iOS 8.1下),并且通过分配countLimit而不是totalCostLimit使其工作。

// getter
- (NSCache *)cache
{
   if (!_cache) {
      _cache = [[NSCache alloc] init];
      _cache.countLimit = aLimit;
   }
   return _cache;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在iOS上检查NSCache内容?

来自分类Dev

达到内存限制时,NSCache崩溃(仅在iOS 7上)

来自分类Dev

NSCache初始化以存储UIImage iOS

来自分类Dev

NSCache-不总是清理吗?

来自分类Dev

iOS-在本地保存图像的最佳实践-NSCache与保存在文档目录中

来自分类Dev

在Swift中objectForKey为NSUserDefaults返回nil

来自分类Dev

实现nscache时出错

来自分类Dev

非对象类型的NSCache行为

来自分类Dev

如何从NSCache删除特定的映像?

来自分类Dev

如何从NSCache删除特定的映像?

来自分类Dev

NSUserDefaults objectForKey始终返回nil,即使存在键

来自分类Dev

存在objectforkey时,键对象返回Null

来自分类Dev

NSMutableDictionary objectForKey:从完整的字典返回NULL

来自分类Dev

iOS 8 App上的内存警告-但使用率较低

来自分类Dev

当应用进入后台时,NSCache清空

来自分类Dev

NSCache何时释放缓存对象?

来自分类Dev

在Swift中模拟NSCache通用方法

来自分类Dev

NSCache在Swift中为UITableView存储图像

来自分类Dev

如何使用nscache从api下载图像?

来自分类Dev

为什么我在objectForKey方法中收到警告?

来自分类Dev

NSLocale objectForKey方法的隐式返回类型是什么?

来自分类Dev

NSLocale objectForKey方法的隐式返回类型是什么?

来自分类Dev

无法推断Swift 3 NSCache通用参数'KeyType'

来自分类Dev

Parse.com saveEventually with callback and use NSCache to store data

来自分类Dev

如何将NSCache与CoreData一起使用

来自分类Dev

使用来自 Firebase 的 NSCache 存储图像 - 目标 C

来自分类Dev

CLFloor在iOS 8中返回nil

来自分类Dev

CLFloor在iOS 8中返回nil

来自分类Dev

在iOS(Xamarin)上启动后出现黑屏

Related 相关文章

热门标签

归档