如何减少集合视图中的内存使用量?

时间:2016-08-24 01:23:55

标签: ios swift uicollectionview

我有一个应用程序,包含带有30个单元格的collectionview。它的细胞由图像和标签组成。我的问题是,当我加载该图像时,我的内存使用量为87 Mb。但如果我没有设置该图像,我的内存使用量仅为30 Mb。

我使用Moa异步加载图片。这是我的单元格初始化:

import UIKit
import moa

class ProductListItemCell: UICollectionViewCell {

    @IBOutlet var imgProductItem: UIImageView!
    @IBOutlet var titlleProductList: UILabel!
    @IBOutlet var priceProductList: UILabel!
    @IBOutlet var boldPriceProductList: UILabel!

    func updateContent(product: Item) {
//        if let imgUrl = product.picUrl {
//             self.imgProductItem.moa.url = "http:\(imgUrl)"
//        }

        if let title = product.title {
            self.titlleProductList.text = title
        }

        if let price = product.priceTag {
            self.priceProductList.setStrikethrough(price)
        }

        if let boldPrice = product.price {
            self.boldPriceProductList.text = boldPrice
        }
    }

}

这是我的cellForItemAtIndexPath

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    if collectionView == myItemsCollectionView {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("firstCell", forIndexPath: indexPath) as! myCollectionViewCell

        cell.updateContent(self.myItems.items[indexPath.item])

        return cell
    }
    else {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("othersCell", forIndexPath: indexPath) as! myCollectionViewCell
        cell.updateContent(others[indexPath.section].items[indexPath.item])
        return cell
    }

}

有没有办法下载图片和"压缩"它?或者我做错了吗?请告诉我。在这一点上被困住了几个星期。

注意:对于像我的应用程序这样的集合视图的某些应用程序,有多少内存使用标准? 30Mb属于"高"?我是记忆管理的新手。

非常感谢你。

1 个答案:

答案 0 :(得分:1)

是的,您可以使用instrument来检查内存泄漏,并且图像加载导致的内存增加很可能是正确的。我以前遇到过这个问题。所以我只使用SDWebImage这样的图像缓存库来​​解决我的问题,因为它只需要第一次获取数据