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];

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

你可能感兴趣的:(iOS 日记 - 缓存优化)