2016-08-24 17 views
1

私は、30セルのコレクションビューで構成されるアプリを持っています。そのセルはイメージとラベルで構成されています。私の問題は、そのイメージをロードすると、私のメモリ使用量は87Mbになります。しかし、私がそのイメージを設定しなかった場合、私のメモリ使用量はわずか30Mbです。コレクションビューでメモリ使用量を減らす方法は?

私はMoaを使用して画像を非同期にロードしています。そして、ここに私の細胞のinitです:

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 
    } 

} 

ある画像をダウンロードし、それを「圧縮」する方法はありますか?または私はそれを間違っているのですか? Plsは私に知らせる。この時点で1週間は固まってしまった。

注:私のアプリのようなコレクションビューを持ついくつかのアプリケーションでは、いくつのメモリが標準で使用されていますか? 30Mbは "high"に属していますか?私はメモリ管理の初心者です。

ありがとうございました。

+0

これはライブラリ** Moa **あなたが言及するかどうかは分かりませんメモリキャッシュはデフォルトでどれくらいの頻度で使用されますか。プロジェクトページでこれについて最初に学ぶ必要があります。それにもかかわらず、私はあなたが画像をダウンロードするためにライブラリを使用する理由と、Kingfisherのような、あなたのために細胞の再利用可能性を扱うものを使用しようとする場合は分かりません。 –

+0

画像の寸法は何ですか?また、セル内の画像ビューの寸法は何ですか?イメージは、イメージビューの次元(時間、もちろん、デバイスの 'スケール ')よりも大きくすべきではありません。それより大きい場合は、イメージのサイズを変更して一致させることをお勧めします。 – Rob

+0

FYIでは、画像に必要なランタイムメモリは、一般に4 x 'width' x' height'(画像ビューのサイズに関係なく、画像のサイズです)です。 – Rob

答えて

1

はい、instrumentを使用してメモリリークを確認し、イメージの読み込みによるメモリの増加が正しいと思われる可能性があります。私は前にこの問題を抱えていた。だから私はちょうどSDWebImageのような画像キャッシングライブラリを使用し、それは初めて取得するためのデータを必要とするので、私の問題を解決する

+0

私は既にAlamofireImageを使用していて、 'af_setImageWithURL'で画像を設定します。あなたの提案をSDWebImageで試してみてください。 –

+0

'AlamofireImage'はイメージキャッシュのティーチング – xmhafiz

関連する問題