gpt4 book ai didi

ios - 将照片中的图像加载到 Collection View 会导致错误消息 "Connection to assetsd was interrupted or assetsd died"

转载 作者:搜寻专家 更新时间:2023-10-30 22:09:56 27 4
gpt4 key购买 nike

我正在尝试将用户相册中的所有图像加载到我的应用程序的收藏 View 中,但在加载其中一些图像后,应用程序将自行关闭并返回主菜单。与 XCode 的连接也断开了。这不会发生在模拟器中,而只会发生在我正在测试的 iPhone 4s 中。崩溃前出现的错误信息,按照出现的顺序,

  1. 收到内存警告
  2. 与 assetsd 的连接中断或 assetsd 死亡。

我已经找到了我认为导致此问题的部分代码。

var imgFetchResult: PHFetchResult!

override func viewDidLoad() {
super.viewDidLoad()
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]

let fetchResult = PHAsset.fetchAssetsWithMediaType(PHAssetMediaType.Image, options: fetchOptions)

if fetchResult.count > 0
{
println("images found ? \(fetchResult.count)")
self.imgFetchResult = fetchResult
}
}

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

println("indexpath is \(indexPath.item)")

if( indexPath.item == 0 )
{
cell.backgroundColor = UIColor.redColor() //temp placeholder for camera image
}
else
{
let asset: PHAsset = self.imgFetchResult[indexPath.item] as PHAsset
PHImageManager.defaultManager().requestImageForAsset(asset, targetSize: PHImageManagerMaximumSize, contentMode: .AspectFill, options: nil, resultHandler: {(result, info) in cell.setThumbnailImage(result)
})
}

return cell
}

我相信我需要释放内存但不确定要释放什么。似乎是图像被加载到 Collection View 的单元格中。

我还发现 Collection View 不超过 4 张图像。在第四张图片之后,崩溃发生了。此外,图像未按顺序加载。

最佳答案

在这行代码中发现了问题

PHImageManager.defaultManager().requestImageForAsset(asset, targetSize: PHImageManagerMaximumSize, contentMode: .AspectFill, options: nil, resultHandler: {(result, info) in cell.setThumbnailImage(result)
})

参数 targetSize 传递了 PHImageManagerMaximumSize 的值,这是罪魁祸首。我将其更改为 CGSize(width: 105, height: 105) 解决了这个问题。

根据文档PHImageManagerMaximumSize

When you use the PHImageManagerMaximumSize option, Photos provides the largest image available for the asset without scaling or cropping. (That is, it ignores the resizeMode option.)

所以,这就解释了问题。我相信如果是单张图片,应该没有问题,但如果是多张图片,设备就会耗尽内存。

我希望这对其他人有帮助。

关于ios - 将照片中的图像加载到 Collection View 会导致错误消息 "Connection to assetsd was interrupted or assetsd died",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28807715/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com