回答編集履歴

2 コメント消し忘れ。

fuzzball

fuzzball score 16068

2016/07/26 14:33  投稿

書き逃げしておきます。
requestImageForAsset()を放置しているのが原因じゃないかなぁと思っています。
Subviewに関しては、removeFromSuperviewでひっぺがして処分していますので、それと同じようにrequestImageForAsset()も処分してやって下さい。リクエストしたときにrequestIDを保存しておいて、cancelImageRequest(requestID)してやればいいと思います。
他の原因、もしくは、他にも原因があるかも知れませんが。
# ただのメモリ不足?
大きな画像を大量に読み込んでメモリ不足になっているのではないか?という推測。
小さいサイズでリクエストするようにします。(requestID関係は一旦削除していいかも)
```swift
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
   :
   //imageviewにはcellのサイズを渡す
   let imageview:UIImageView = UIImageView(frame: CGRectMake(1, 1, CGRectGetWidth(cell.frame)-2, CGRectGetHeight(cell.frame)-2))
   //imageview.image = photo //ここでは設定しない
   imageview.contentMode = .ScaleAspectFit //お好みで
   imageview.clipsToBounds = true
   cell.contentView.addSubview(imageview)
   
   //リクエスト(& requestID保存)
   //リクエスト
   manager.requestImageForAsset(
       asset,
       targetSize: imageview.frame.size, //imageviewのサイズでリクエスト
       contentMode: .AspectFit, //imageviewに合わせる?
       options: nil
   ) { (image, info) -> Void in
       //imageviewにセット
       imageview.image = image //読み込んだ画像をセット
       let degraded = (info![PHImageResultIsDegradedKey]?.boolValue)!
       //print(image!.size, degraded)
       if degraded {
           //print(indexPath, "continue...")
       }
       else
       {
           //print(indexPath, "done")
       }
   }
   
   return cell
}
```
1 ちっちゃいのください。

fuzzball

fuzzball score 16068

2016/07/26 14:31  投稿

書き逃げしておきます。
requestImageForAsset()を放置しているのが原因じゃないかなぁと思っています。
Subviewに関しては、removeFromSuperviewでひっぺがして処分していますので、それと同じようにrequestImageForAsset()も処分してやって下さい。リクエストしたときにrequestIDを保存しておいて、cancelImageRequest(requestID)してやればいいと思います。
他の原因、もしくは、他にも原因があるかも知れませんが。
他の原因、もしくは、他にも原因があるかも知れませんが。
# ただのメモリ不足?
大きな画像を大量に読み込んでメモリ不足になっているのではないか?という推測。
小さいサイズでリクエストするようにします。(requestID関係は一旦削除していいかも)
```swift
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
   :
   //imageviewにはcellのサイズを渡す
   let imageview:UIImageView = UIImageView(frame: CGRectMake(1, 1, CGRectGetWidth(cell.frame)-2, CGRectGetHeight(cell.frame)-2))
   //imageview.image = photo //ここでは設定しない
   imageview.contentMode = .ScaleAspectFit //お好みで
   imageview.clipsToBounds = true
   cell.contentView.addSubview(imageview)
   
   //リクエスト(& requestID保存)
   manager.requestImageForAsset(
       asset,
       targetSize: imageview.frame.size, //imageviewのサイズでリクエスト
       contentMode: .AspectFit, //imageviewに合わせる?
       options: nil
   ) { (image, info) -> Void in
       //imageviewにセット
       imageview.image = image //読み込んだ画像をセット
       let degraded = (info![PHImageResultIsDegradedKey]?.boolValue)!
       //print(image!.size, degraded)
       if degraded {
           //print(indexPath, "continue...")
       }
       else
       {
           //print(indexPath, "done")
       }
   }
   
   return cell
}
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る