合完代碼后辅搬,編譯安裝包到手機上裝發(fā)現(xiàn)卡頓比較嚴(yán)重烹骨,今天做了一點優(yōu)化烟瞧。
-
優(yōu)化引發(fā) crash 問題
數(shù)組是 mutable 的,不表示數(shù)組元素是 mutable 的悠鞍,可以手動使用 mutableCopy 生成一份 mutable 的數(shù)據(jù)对室,進行操作。(今天遇到的 crash 的原因)咖祭。
添加簡單的緩存
左側(cè) Tab 來回切換數(shù)據(jù)都是重復(fù)的掩宜,可以將右側(cè)的數(shù)據(jù)添加緩存
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];
這么改后重新運行能明顯感覺到更加流暢了牺汤。