zoukankan      html  css  js  c++  java
  • iOS多图片下载

    iOS多图片下载、在cell里面下载图片、做了缓存优化。

    (app.icon是图片地址)
        // 先从内存缓存中取出图片
        UIImage *image = self.images[app.icon];
        if (image) { // 内存中有图片
            cell.imageView.image = image;
        } else {  // 内存中没有图片
            // 获得Library/Caches文件夹
            NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
            // 获得文件名
            NSString *filename = [app.icon lastPathComponent];
            // 计算出文件的全路径
            NSString *file = [cachesPath stringByAppendingPathComponent:filename];
            // 加载沙盒的文件数据
            NSData *data = [NSData dataWithContentsOfFile:file];
            
            if (data) { // 直接利用沙盒中图片
                UIImage *image = [UIImage imageWithData:data];
                cell.imageView.image = image;
                // 存到字典中
                self.images[app.icon] = image;
            } else { // 下载图片
                [self.queue addOperationWithBlock:^{
                    // 下载图片、多线程
                    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:app.icon]];
                    UIImage *image = [UIImage imageWithData:data];
                    
                    [NSThread sleepForTimeInterval:1.0];
                    
                    // 回到主线程显示图片
                    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                        cell.imageView.image = image;
                    }];
                    
                    // 存到字典中
                    self.images[app.icon] = image;
                    // 将图片文件数据写入沙盒中
                    [data writeToFile:file atomically:YES];
                }];
         }
  • 相关阅读:
    es操作
    MySQL逻辑架构
    ceshimd
    mysql资料
    已解决 : VMware Workstation 与 Hyper-V 不兼容。请先从系统中移除 Hyper-V 角色
    MySQL数据库操作
    phpstorm配置laravel语法提示
    MySQL日志之慢查询日志(slow-log)
    456
    topcoder srm 553
  • 原文地址:https://www.cnblogs.com/jukaiit/p/5571511.html
Copyright © 2011-2022 走看看