我有一个集合视图,需要显示其文件保存在设备上的图像集合。它们都是600x600像素,所以我认为最好在后台线程上异步创建UIImage,然后在主线程上设置image
的{{1}}属性。以下是我在UIImageView
方法
(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
对于其中一个单元格,dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
NSString *imageName = [NSString stringWithFormat:@"wo-%@", template.fileName];
UIImage *image = [UIImage imageNamed:imageName];
dispatch_async(dispatch_get_main_queue(), ^{
if (image == nil)
{
self.collectionView.backgroundColor = [UIColor redColor];
NSLog(@"image named: %@ in nil!", imageName);
}
cell.imageView.image = image;
});
});
return cell;
偶尔会image
。它不可重现,并不总是相同的单元/图像名称。我想知道这与使用nil
方法有什么关系,还是我错误地使用GCD?我很感兴趣UIImage imageNamed:
为什么偶尔image
nil
,而不一定是做同样事情的替代方法。