如何为SDWebImageManager创建不同的实例

时间:2016-09-22 13:44:50

标签: ios objective-c sdwebimage

我有很多控制器,我使用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共享实例。

2 个答案:

答案 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}}。

我的建议是,或许设置此队列的优先级可以解决您的问题。