0

在我的应用程序中,我有一个根视图,它是一个网格视图。我在 gridview 单元格中加载图像。我在加载图像时遇到问题。一旦我启动应用程序,一秒钟后就会出现没有图像的空白单元格,这些图像正在加载到单元格中。有什么办法可以解决这个问题。以下是我的代码。

UIImage *defaultImage = [UIImage imageNamed:@"addEmployee.png"];
if (!employee.imageName) {
    return defaultImage;
}

  if ([_imageCache objectForKey:employee.imageName]) {
      return [_imageCache objectForKey:employee.imageName];
  }

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^ {
    UIImage *image = [UIImage imageWithContentsOfFile:[self  imagePath:employee.imageName]];
    dispatch_async(dispatch_get_main_queue(), ^ {
        if (image) {
            [_imageCache setObject:image forKey:employee.imageName];
            cell.imageView.image = image;
        } else {
            [_imageCache setObject:defaultImage forKey:employee.imageName];
            cell.imageView.image = defaultImage;
            return;
        }
    });
});

 return cell.imageView.image;

}
4

1 回答 1

0

加载图像需要时间,没有办法让它即时。您的代码似乎很明智,您正在从主线程加载图像,因此它不会阻塞 UI,并在加载后缓存它们。使其更快的唯一方法是加载更少的图像或使图像更小。

于 2012-02-21T23:38:09.603 回答