requestImageForAsset resultHandler 块永远不会被调用

Posted

技术标签:

【中文标题】requestImageForAsset resultHandler 块永远不会被调用【英文标题】:requestImageForAsset resultHandler block never gets called 【发布时间】:2018-09-15 02:57:17 【问题描述】:

我正在尝试从 PHAsset 为集合视图单元加载 UIImage,如下所示,

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath;

    myCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"CELL_ID" forIndexPath:indexPath];

    PHAsset *asset = _assetsFetchResults[indexPath.item];
    NSLog(@"asset = %@", asset);

    PHImageRequestOptions *myOpts = [[PHImageRequestOptions alloc]init];
    myOpts.synchronous = YES;

    [_imageManager requestImageForAsset:asset
                             targetSize:AssetGridThumbnailSize
                            contentMode:PHImageContentModeDefault
                                options:myOpts
                          resultHandler:^(UIImage *myResult, NSDictionary *myInfo) 
                                  NSLog(@"***---info = %@", myInfo);
                                  cell.myImageView.image = myResult;
                              ];


    return cell;

这运行没有错误,但没有图像被发送到单元格并且结果处理程序块永远不会被调用。 PHAsset 不是零。 TIA

【问题讨论】:

你确定 _imageManager 不是 nil 吗? 什么是_imageManager,它从何而来? 【参考方案1】:

啊!我知道我一定是在做一些愚蠢的事情! 8-)

将此添加到 viewDidLoad 解决了它。

_imageManager = [[PHCachingImageManager alloc] init];
[self resetCachedAssets];

感谢 trungduc 和 El Tomato 为我指明了正确的方向。

【讨论】:

以上是关于requestImageForAsset resultHandler 块永远不会被调用的主要内容,如果未能解决你的问题,请参考以下文章

重新加载和调用requestImageForAsset时UICollectionView闪烁

HighQualityFormat 的 PHImageManager.requestImageForAsset 从不调用 resultHandler

requestImageForAsset resultHandler块永远不会被调用

requestImageForAsset resultHandler 块永远不会被调用

在 iOS 9 RequestImageForAsset 返回小图像检索 1:1 带过滤器的照片

PhotoKit:使用 requestImageForAsset 通过 PHImageManagerMaximumSize 获取资产时崩溃 [assetsd 被中断或死亡]