我有很多控制器,我使用SDWebImage Library下载图像。我正在使用以下代码
[[SDWebImageManager sharedManager] downloadImageWithURL:[NSURL URLWithString:_urlToDownloadFrom] options:0 progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL)
{
_productInfo.isDownloading = false;
_productInfo.isImageDownloadedScuessfully = finished;
if (image)
{
[_productInfo setMainImg:image];
canShowListView ? [self.listCollectionView reloadData] : [self.gridCollectionView reloadData];
}
}];
如代码所示,我使用SDWebImageManager共享实例下载数据,因为这些我所有的下载操作都在FIFO系列的队列中进行。所以例如我有一个控制器,我正在下载10个图像,然后我推动其上方的另一个控制器下载更多的5个图像。因此,对于来自顶级控制器的这些新图像,他们必须等到前一个控制器下载这10个图像。我怎么解决这个问题?我认为只有可能的解决方案是创建SDWebImageManager的新实例,但这也创建了SDWebImageDownloader共享实例。
答案 0 :(得分:0)
你试过template<>
struct printArg<std::function<void (int)> >
{
static inline void print(std::ostream &os, std::function<void (int)> arg, bool withComma)
{
if (withComma)
{
os << ",";
}
if (arg)
{
os << "true";
}
else
{
os << "false";
}
}
};
吗?我记得它有一个下载操作队列,你可以配置并发下载的数量。
答案 1 :(得分:0)
我看到的另一种可能性是,当你打电话时:
[[SDWebImageManager sharedManager] downloadImageWithURL:
在this class (SDWebImageDownloader)中定义的实现了用于维护排队操作的NSOperationQueue,并且可以设置此队列的优先级{。{3}}。
我的建议是,或许设置此队列的优先级可以解决您的问题。