gpt4 book ai didi

ios - NSCache objectForKey : always return nil after memory warning on iOS 8

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:43 24 4
gpt4 key购买 nike

我遇到了一个只发生在 iOS 8 上的问题。我使用 NSCache 来存储我的图像。收到内存警告后,我会重新获取图像并存储到缓存中。但是,缓存在发出警告后无法再存储我的图像。它总是通过使用 objectForKey: 向我返回 nil。
这是我的部分代码:

 @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;
}

关于ios - NSCache objectForKey : always return nil after memory warning on iOS 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27289360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com