永远要记得,成功的决心远胜于任何东西。——亚伯拉罕·林肯
今后会分享一些几年来总结的小技巧,今天分享下使用模型保存图片,文笔不好,大家见谅!
基本上每个页面都有图片,图片加载总是伴随着内存溢出、内存泄漏或者是内存消耗过大的问题。在使用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
中心思想就是使用模型保存图片数据,滚动时加载图片模型数据,好了。不算完美,有什么问题欢迎大家聊聊!