永远要记得,成功的决心远胜于任何东西。——亚伯拉罕·林肯
今后会分享一些几年来总结的小技巧,今天分享下使用模型保存图片,文笔不好,大家见谅!
基本上每个页面都有图片,图片加载总是伴随着内存溢出、内存泄漏或者是内存消耗过大的问题。在使用tableView 和collectionview的时候每次上下滑动都会重复加载图片,消耗内存,占用资源。直接上代码:(collectionview)
UICollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
[self setCellImage:cell indexPath:indexPath withDict:memuDict];
cell.backgroundColor = [UIColor whiteColor];
return cell;
- (void) setCellImage:(UICollectionViewCell * ) cell indexPath:(NSIndexPath *) indexPath withDict:(NSDictionary *) dict {
GJYHome_groupList_Model * listModel = self.model_groupList[indexPath.row ];//self.model_groupList保存模型数组
if (menuList.image == nil) {
WS(weakSelf);
[GJYWebImageManager sd_webViewWithData:menuList.menuIcon placeholderImage:@"你选择的占位图" WiBlock:^(UIImage *k) {
[cell.image setImage:k];
[listModel setImage:UIImagePNGRepresentation(k)];
[weakSelf.model_groupList replaceObjectAtIndex:indexPath.row withObject:listModel];
} else {
[cell.image setImage: [UIImage imageWithData:listModel.imageData]];
}]; // 这是我自己封装的一个图片下载的类
}
模型层:
@interface GJYHome_groupList_Model : NSObject
/** 菜单项名称 */
@property (nonatomic , copy) NSString * menuName;
@property (nonatomic , strong) NSData * imageData;
@end
中心思想就是使用模型保存图片数据,滚动时加载图片模型数据,好了。不算完美,有什么问题欢迎大家聊聊!