阅读 125

YYCache、YYWebImage常规使用

YYCache基础用法

开发中涉及数据持久化方面也挺多的,方法也很多,列如sqlite,归档,userdefalut单列,plist存储,苹果自带core data,亦或是基于sqlite封装的三方库(FMDB)都是可以实现需求的。到底喜欢哪一种,就凭习惯了。这里我要讲的是另外一种数据存储YYCache,使用起来也非常方便,而且可以控制存储数量,在合适的时候替换比较旧的数据。是不是有点熟悉了,对,就是采用的LRU算法,可以根据需求保存到一定数据,就是覆盖以前比较旧的数据。
YYCache底层是链表结构,刚才说的LRU就是删除链表的尾部,直到满足条件。直接上干货

 NSArray *saveLocationDataArrays = @[@{@"name":@"dd"}];
    //相当于创建一个名字为dataBase的数据库,存在的时候不创建,不存在的时候才会创建
    YYCache *myCache = [YYCache cacheWithName:@"dataBase"];
    //通过key去去保存数据,相对于一个map,保存的值不重复且是最新的
    //同步方式
    [myCache setObject:saveLocationDataArrays forKey:@"key"];
    //保存值异步方式
    CFAbsoluteTime starTime = CFAbsoluteTimeGetCurrent();
    [myCache setObject:saveLocationDataArrays forKey:@"key" withBlock:^{
        CFAbsoluteTime ednTime = CFAbsoluteTimeGetCurrent();
        NSLog(@"异步保存数据时间:%f",ednTime - starTime);
    }];
    
    //同步判断
    BOOL success =  [myCache containsObjectForKey:@"key"];
    if (!success) {
        return;
    }
    //异步判断
    [myCache containsObjectForKey:@"key" withBlock:^(NSString * _Nonnull key, BOOL contains) {
        NSLog(@"%@%d",key,contains);
    }];
    
    //同步取值
    id value = [myCache objectForKey:@"key"];
    NSLog(@"%@",value);
     //异步取值
    [myCache objectForKey:@"key" withBlock:^(NSString * _Nonnull key, id<NSCoding>  _Nonnull object) {
        NSLog(@"%@-%@",key,object);
    }];
    //删除存储map中对应key的值
    [myCache removeObjectForKey:@"key"];
    //删除全部对象
    [myCache removeAllObjects];

除此之外,效率也非常高的,可以看出保存时间仅仅0.000382s

15:13:28.715760+0800 test2[9793:443132] 异步保存数据时间:0.000382

YYWebImage基础用法

YYWebImage用法跟SDwebImage用法类似,最基本用法,它底层用 YYCache 实现了内存和磁盘缓存, 用 YYImage 实现了 WebP/APNG/GIF 动图的解码和播放,异步的图片加载,支持 HTTP 和本地文件。
支持 GIF、APNG、WebP 动画(动态缓存,低内存占用)。
支持逐行扫描、隔行扫描、渐进式图像加载。
UIImageView、UIButton、MKAnnotationView、CALayer 的 Category 方法支持。
常见图片处理:模糊、圆角、大小调整、裁切、旋转、色调等。
高性能的内存和磁盘缓存。
高性能的图片设置方式,以避免主线程阻塞。
每个类和方法都有完善的文档注释。

    //基础用法
    UIImageView *imageView = nil;
    [imageView setImageWithURL:[NSURL URLWithString:@""] placeholder:[UIImage imageNamed:@"xx.png"]];
    //其他用法
    [imageView setImageWithURL:<#(nullable NSURL *)#> options:<#(YYWebImageOptions)#>];
    [imageView setImageWithURL:<#(nullable NSURL *)#> placeholder:<#(nullable UIImage *)#> options:<#(YYWebImageOptions)#> completion:<#^(UIImage * _Nullable image, NSURL * _Nonnull url, YYWebImageFromType from, YYWebImageStage stage, NSError * _Nullable error)completion#>];
    [imageView setImageWithURL:<#(nullable NSURL *)#> placeholder:<#(nullable UIImage *)#> options:<#(YYWebImageOptions)#> manager:<#(nullable YYWebImageManager *)#> progress:<#^(NSInteger receivedSize, NSInteger expectedSize)progress#> transform:<#^UIImage * _Nullable(UIImage * _Nonnull image, NSURL * _Nonnull url)transform#> completion:<#^(UIImage * _Nullable image, NSURL * _Nonnull url, YYWebImageFromType from, YYWebImageStage stage, NSError * _Nullable error)completion#>];

作者:bugLife丶

原文链接:https://www.jianshu.com/p/13c237e1a2e2

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐