应用程序运行时不断增加内存使用量(Swift)

时间:2017-03-28 06:00:07

标签: ios swift memory-management

我正从文档目录中检索图像数据和字符串,并在ViewController1的集合视图中使用此数据。然后通过单击集合视图单元格转到下一个视图控制器ViewController2并再次从文档目录中检索图像数据和字符串,并在另一个集合视图中使用此数据。现在问题是当我从一个视图控制器转到另一个视图控制器并且每次增加内存使用量并因此导致应用程序崩溃时返回。这种类型的记忆增加的原因是什么以及我将如何解决它?

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell{
let cell: PhotoThumbnail = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! PhotoThumbnail

 do{
            let ta = foldersDirectoryPath + "/\(self.titles2[indexPath.item])"
            print(ta)
            let ti = try NSFileManager.defaultManager().contentsOfDirectoryAtPath(ta)
            print(ti.count)
            cell.amountLabel.layer.borderWidth = 1
            cell.amountLabel.layer.borderColor = UIColor(red:16/255.0, green:56/255.0, blue:70/255.0, alpha: 1.0).CGColor
            cell.amountLabel.text = "\(ti.count)"


        }catch{

        }

        cell.setThumbnailImage(images[indexPath.item])
        let str = titles2[indexPath.item]
        let nameString = str.substringWithRange(Range<String.Index>(start: str.startIndex.advancedBy(24), end: str.endIndex.advancedBy(0)))

        cell.nameLabel.text = nameString
        print(dateArray[indexPath.item])
        cell.dateLabel.text = dateArray[indexPath.item]

   return cell
}


class PhotoThumbnail: UICollectionViewCell {

@IBOutlet weak var imgView : UIImageView!

@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var amountLabel: UILabel!

  func setThumbnailImage(thumbnailImage: UIImage){
    self.imgView.image = thumbnailImage
   }

}

此代码适用于第一个集合视图。

2 个答案:

答案 0 :(得分:1)

创建视图的一个和两个实例。你应该使用segue将数据从一个视图传递到另一个视图,然后返回。

答案 1 :(得分:0)

您需要将所有声明创建为可选,当您从一个视图控制器转到另一个控制器时,创建一个函数来释放所有这些对象。这有助于管理内存问题。