我在collectionView
加载图片时遇到了一些问题(colectionCell
也包含horizontalCollection
)。
showActivityIndicator()
imageView.sd_setOptimizedImageWithURL (url, placeholderImage: placeholder) {
self?.hideActivityIndicator()
})
我也是这样做的:
override func prepareForReuse() {
super.prepareForReuse()
hideActivityIndicator()
seshImageView.sd_cancelCurrentImageLoad()
}
然后我向上/向下滚动并最终发生崩溃。
使用仪器的分配我看到内存正在快速增长,但我还无法解决它。
请查看我的屏幕。 TotaBytes
已达到近6GB,然后崩溃。
有人可以帮助我理解我做错了什么。谢谢!
答案 0 :(得分:1)
//表示UICollectionViewCell的自定义单元格,您可以使用nib或使用代码来定义它
import UIKit
import SDWebImage
class TDtopicCell: UICollectionViewCell {
@IBOutlet weak var image: UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
loaderAct!.transform = CGAffineTransformMakeScale(2, 2);
loaderAct!.startAnimating();
addShadow();
}
func downLoadImage(_url:String) -> Void {
image.sd_setImageWithURL(NSURL(string: _url),placeholderImage:nil, options:SDWebImageOptions.RetryFailed , completed: {[weak self]
(image, error, cacheType, url) in
// do your custom logic here
if let wSelf = self {
dispatch_async(dispatch_get_main_queue()){
wSelf.clear()
}
}
})
}
func clear() -> Void {
if((loaderAct) != nil)
{
loaderAct!.removeFromSuperview();
}
}
}
//此方法属于我的自定义UICollectionView //这肯定会解决你的内存使用问题,因为使用延迟加载来提供图像
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as!TDtopicCell
eachTDtopic=collectionData![indexPath.item];
//eachTDtopic?.topicImage is image path ------------------------------------------
cell.downLoadImage((eachTDtopic?.topicImage)!);
// Configure the cell
return cell
}