前阵子加载系统内置相册,发现相册多了以后,拉动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];