前阵子加载系统内置相册,发现相册多了以后,拉动table,很多图片都会出现重复的现象,排查代码发现,自己在cellForRowAtIndexPath里面,每次都会alloc一次显示图片的imageview,不去判断这个imageview是否存在。只需要先判断一下这个imageview是否已经存在。讲得不到位的地方欢迎指正。
下面代码是加在cellForRowAtIndexPath里面的。
UIImageView *showImage = (UIImageView *)[cell.contentView viewWithTag:888]; //先将cell.contentView里面tag为888的view赋给showImage
if (!showImage) { //如果cell.contentView里不存在tag为888的view时候,进入这里对showImage重新alloc
showImage = [[LUImageView alloc]init];
showImage.tag = 888;
showImage.frame = CGRectMake(cell.frame.origin.x,
cell.frame.origin.y,
56,
56); //只有当这个showImage不存在时候才去重新设置一遍frame,没必要每次进来,不论有没有都去设置一次
[cell.contentView addSubview:showImage]; //同上,只有当他重新alloc时候才去再次添加,没不要每次无论有没有重复添加
}
showImage.image = [UIImage imageWithCGImage:image];
cellForRowAtIndexPath