2016-11-02 4 views
0

У меня есть проблема, когда я делаю загрузку изображений в collectionView (colectionCell содержит также horizontalCollection).Загрузка изображений через SDWebImage ест память проекта

showActivityIndicator() 
imageView.sd_setOptimizedImageWithURL (url, placeholderImage: placeholder) { 
    self?.hideActivityIndicator() 
}) 

Я также сделать это:

override func prepareForReuse() { 
     super.prepareForReuse() 
     hideActivityIndicator() 
     seshImageView.sd_cancelCurrentImageLoad() 
} 

Затем я прокрутки вверх/вниз, и в конечном итоге аварии происходит. Использование выделения из инструментов Я вижу, что память быстро растет, но я пока не могу ее исправить. Просмотрите мой экран. TotaBytes достиг почти 6 ГБ, а затем сбой. enter image description here Может кто-нибудь помочь мне понять, что я делаю неправильно. Благодаря!

ответ

1

// моих пользовательские клетки, которые представляют собой UICollectionViewCell вы можете определить его с помощью пера или с помощью кода

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 // это, безусловно, решить проблему использования памяти, как feteching images with lazy loading

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 
} 
+0

Спасибо за разъяснение, попробуем немного позже, похоже, проблема связана не только с загрузкой изображения. Когда я прокомментирую весь код и прокручиваю только пустые ячейки, память продолжает расти. Может быть, вы столкнулись с этим? Это обычное дело? Благодаря! – Svitlana

+0

ok вы используете reuseIdentifiers для вашего UICollectionView – dragoneye

+0

да, я использую reuseIdentifiers, но, кажется, я нахожу ошибку, спасибо за вашу помощь, и ленивая загрузка тоже была полезной! – Svitlana

Смежные вопросы