• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > 独木成林iossdwebimage的独立缓存问题

独木成林iossdwebimage的独立缓存问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了独木成林,独木成林官网,独木成林软件,独木不成林,印度榕树独木成林等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:独木成林 ios sdwebimage的独立缓存问题
描述:

如题
SDImageCache *imageCache= [[SDImageCache alloc] initWithNamespace:@"mynamespace"];

这一句是缓存目录对象

然后提供了一个方法
[imageCache queryDiskCacheForKey:url done:^(UIImage *image, SDImageCacheType cacheType) {}];
这是查找自己的缓存目录

这样确实能查找出图片 可是性能上有问题 这一句是查找的物理磁盘上的 并没有从内存中查找 性能上不是最好 那有没有什么方法能直接从内存中查找

我说一下我的业务 现在业务需要缓存两部分 一部分直接用sd的可以直接解决 另一部分是缓存后不能清除的 要自己管理 这时我就建了另一个缓存目录 可是我翻源码发现 只能从物理磁盘上取图片 这样性能不爽 那有没有什么方法能直接从内存中查找 真心求解答!!


解决方案1:

下面的方法,扩展性很低,并且其他开发者需要知道新的类方法。
所以,建议继承SDImageCache ,并重写里面的部分方法。这样可以做到对无关的开发者透明处理。

可以参考下面的代码解决问题。

@interface SDImageCache (Sun)

+ (UIImage *)imageFromMemoryCacheForKey_v2:(NSString *)key;
+ (UIImage *)imageFromDiskCacheForKey_v2:(NSString *)key;

@end

@implementation SDImageCache (Sun)


+ (instancetype)sunImageCaceh {
    static SDImageCache *imageCache;

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        imageCache = [[SDImageCache alloc] initWithNamespace:@"posters"];
        imageCache.maxCacheSize = 1024*30*1024;
    });
    return imageCache;
}

+ (UIImage *)imageFromMemoryCacheForKey_v2:(NSString *)key {
    UIImage *memoryImage = [[SDImageCache sunImageCaceh] imageFromMemoryCacheForKey:key];

    if(!memoryImage) {
        memoryImage = [[SDImageCache sharedImageCache] imageFromMemoryCacheForKey:key];
    }
    return memoryImage;
}

+ (UIImage *)imageFromDiskCacheForKey_v2:(NSString *)key {
    UIImage *diskImage;
    diskImage = [[SDImageCache sunImageCaceh] imageFromDiskCacheForKey:key];

    if(!diskImage) {
        diskImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:key];
    }
    return diskImage;
}

@end

@interface sun : NSObject

@end

@implementation sun



- (void)loadImage {


    NSString *imagePath = [HUWebImage cacheImagePath:@"posters"];
    NSString *cachePathForKey = [HUWebImage cachePathForKey:url inPath:imagePath];

    UIImage *image;
    image = [SDImageCache imageFromMemoryCacheForKey_v2:cachePathForKey];
    if(!image) {
        image = [SDImageCache imageFromDiskCacheForKey_v2:cachePathForKey];
    }
    if(!image) {
        NSURL *imageURL = [NSURL URLWithString:i];
        // 网络下载
        [SDWebImageDownloader.sharedDownloader downloadImageWithURL:imageURL options:SDWebImageLowPriority | SDWebImageRetryFailed progress:^(NSInteger receivedSize, NSInteger expectedSize) {} completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
             if(image && finished && data) {
                 // 根据需求存入不同的磁盘
                 [imageCache storeImage:image forKey:url toDisk:true];
                 [[SDImageCache sharedImageCache] storeImage:image forKey:url toDisk:true];
             }
         }];
    }
}

@end


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 独木成林iossdwebimage的独立缓存问题

相关文章

  • 2017-06-05 for循环遍历
  • 2017-06-05 plistplist文档中,如何读取是数组类型的元素?
  • 2017-06-05 iOS开发想旋转UIImage90度但是毫无效果
  • 2017-06-05 在Mac系统里,让office保存后放到别的电脑时打开出现不兼容的问题,怎么解决???
  • 2017-06-05 timeoutIntervalForRequesttimeoutIntervalForResource有什么区别
  • 2017-06-05 js怎么在iframe外执行iframe里面的方法
  • 2017-06-05 UICollectionView如何自定义item之间的间隔样式?
  • 2017-06-05 iOS开发,获取的二进制数据,在iOS9和iOS8上转化成字典,结果不一致
  • 2017-06-05 读取文件iOS持久化,读取本地文件数据导致程序崩溃
  • 2017-06-05 ios源iOS开源项目XSForm怎么运行?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 修改qq密保问题iosblock外变量修改问题
    • iOS微博分享启动程序崩溃在[WeiboSDKregisterApp:appkey]中
    • OC网络编程OC中遍历数组操作的结果为什么是一串地址?
    • commond+B后,'#import<openssl/asn1h>'filenotfound;
    • swift中问号和叹号的作用
    • sc.12530怎么用flatlist替换scrollview?
    • app没有crash,但是不动了,这是什么情况?怎么调试?
    • mysql连接查询两表的所有字段
    • xcode81编译时,一直不动,也没有出现错误信息
    • iOSUITest问题,OC下XCTAssertEqual错误

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有