gpt4 book ai didi

ios - 许多图像请求后 PHImageManager 崩溃

转载 作者:可可西里 更新时间:2023-11-01 06:14:46 34 4
gpt4 key购买 nike

我正在尝试使用 PHAssetMediaTypeImage 获取所有用户 PHAsset,然后遍历它们,一次获取相应的 UIImages时间。我的 iPhone 5 上有大约 2k 张照片,此代码在迭代其中的 587 张照片后崩溃。

PHFetchResult *fr = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:nil];

PHImageManager *manager = [PHImageManager defaultManager];
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.synchronous = YES;
__block int i = 0;
for (PHAsset *result in fr)
{

[manager requestImageForAsset:result targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeAspectFill options:options resultHandler:^(UIImage *image, NSDictionary *info) {
NSLog(@"%d", i);
i++;
}];
}

异常读取 EXC_BAD_ACCESS(代码=1,地址=0x0)。任何帮助我指明正确方向的人都将不胜感激。

最佳答案

关闭这个循环。在 for 循环完成之前,图像不会被释放,因此您需要在每次循环迭代后放置一个 @autoreleasepool 来清空池,就像这样

PHFetchResult *fr = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:nil];
PHImageManager *manager = [PHImageManager defaultManager];
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.synchronous = YES;
__block int i = 0;
for (PHAsset *result in fr)
{
@autoreleasepool {
[manager requestImageForAsset:result targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeAspectFill options:options resultHandler:^(UIImage *image, NSDictionary *info) {
NSLog(@"%d", i);
i++;
}];
}
}

关于ios - 许多图像请求后 PHImageManager 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26876875/

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