我目前正在开发一个应用程序,它包含图像下载并在滚动视图中显示大约20个图像。下载效果很好,从NSData到UIImage的转换也很好。但是,如果多次下载同时完成,我会遇到1秒延迟峰值,因此如果UIImageView的多个图像属性设置在非常接近的位置。我怎样才能减少这种滞后?
这是下载完成时调用的代码。这可以在1秒的间隔内调用20次左右。
// _imageDataQueue is a dispatch_queue created in the init method
dispatch_async(_imageDataQueue, ^{
// data is an NSData object set when the download completes
UIImage *image = [UIImage imageWithData:data];
dispatch_async(dispatch_get_main_queue(), ^{
if (image) {
// this is stripped down, but it is just some simple logic
// and eventually the image is set
[theImageView setImage:image];
} else {
// called if there is no image and theImageView's image is set
// to a cached image
[theImageView setImage:someCachedUIImage];
}
});
});
也许我可以排队setImage调用?解决这个问题的最佳方法是什么?