gpt4 book ai didi

ios - ios:图像缓存和检索

转载 作者:行者123 更新时间:2023-12-01 17:53:17 25 4
gpt4 key购买 nike

我希望为iOS中的图像实现缓存功能。
仅出于我的理解,我希望为此创建一个示例应用程序。

这是我想做的:

  • 从互联网获取高分辨率图像并将其缓存,显示。
  • 现在,下一次加载此ViewController时,应该从缓存而不是从Internet加载图像。

  • 我知道如何使用SDWebImage框架缓存图像。我想尝试使用NSCache。

    如何使用NSCache实施它?举个例子。

    编辑:
        - (void)viewDidLoad
    {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    NSCache *cache = [self imageCache];

    NSURL *url = [NSURL URLWithString:@"http://i1.ytimg.com/vi/YbT0xy_Jai0/maxresdefault.jpg"];
    NSData *data = [NSData dataWithContentsOfURL:url];
    UIImage *image = [[UIImage alloc] initWithData:data];

    NSString *imagePath = @"http://i1.ytimg.com/vi/YbT0xy_Jai0/maxresdefault.jpg";
    // UIImage *image;
    if (!(image = [cache objectForKey:imagePath])) { // always goes inside condition
    // Cache miss, recreate image
    image = [[UIImage alloc] initWithData:data];
    if (image) { // Insert image in cache
    [cache setObject:image forKey:imagePath]; // cache is always nil
    }
    }
    _imgCache.image = image;

    最佳答案

    您可以使用和ID将图像添加到缓存:

    [imageCache setObject:image forKey:@"myImage"];
    以后您可以使用以下格式检索图像:
    UIImage *image = [imageCache objectForKey:@"myImage"];
    整个流程如下:
    UIImage *image = [imageCache objectForKey:@"myImage"];
    if (!image)
    {
    // download image
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
    NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:yourURL]];
    if (imageData)
    {
    // Set image to cache
    [imageCache setObject: [UIImage imageWithData:imageData] forKey:@"myImage"];
    dispatch_async(dispatch_get_main_queue(), ^{
    [yourImageView setImage:[UIImage imageWithData:imageData]];
    });
    }
    });
    }
    else
    {
    // Use image from cache
    [yourImageView setImage:image];
    }

    关于ios - ios:图像缓存和检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23133061/

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