iOS 日记 - 缓存优化

合完代码后,编译安装包到手机上装发现卡顿比较严重,今天做了一点优化。

  • 优化引发 crash 问题

    数组是 mutable 的,不表示数组元素是 mutable 的,可以手动使用 mutableCopy 生成一份 mutable 的数据,进行操作。(今天遇到的 crash 的原因)。

  • 添加简单的缓存
    左侧 Tab 来回切换数据都是重复的,可以将右侧的数据添加缓存

if ([BARS_CACHE objectForKey:selectedCateid]) {
        NSLog(@"命中");
        bars = [BARS_CACHE objectForKey:selectedCateid];
    } else {
        bars = [[[self fetchLocalJSON:[NSString stringWithFormat:@"get_bar_list_by_category- copy %@", selectedCateid]] objectForKey:@"result"] objectForKey:@"bars"];
        // 添加缓存
        [BARS_CACHE setObject:bars forKey:selectedCateid];
    }

同样,图片也添加缓存,避免二次渲染(这个卡顿很明显)

// 刷新图片
    NSURL *imageURL = [NSURL URLWithString:[_bar objectForKey:@"pic"]];
    UIImage *image;
    if ([IMGS_CACHE objectForKey:imageURL]) {
        NSLog(@"命中缓存");
        image = [IMGS_CACHE objectForKey:imageURL];
    } else {
        NSLog(@"未命中缓存");
        NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
        image = [UIImage imageWithData:imageData];
        
        [IMGS_CACHE setObject:image forKey:imageURL];
    }
    [_imageView setImage:image];

这么改后重新运行能明显感觉到更加流畅了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容