gpt4 book ai didi

iphone - 如何在使用SDWebimage显示之前先下载Cache中的网页图片?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:33 24 4
gpt4 key购买 nike

我必须在我的应用程序中下载大量网络图像。现在我正在尝试使用 Grand Central Dispatch 在我的初始类(class)中下载图像。

代码:

- (void)viewDidLoad
{
[super viewDidLoad];

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_async(queue, ^{
// Perform non main thread operation
for (NSString *imageURL in tempoaryArr1) {
NSURL *url = [NSURL URLWithString:imageURL];

SDWebImageManager *manager = [SDWebImageManager sharedManager];

[manager downloadWithURL:url
delegate:self
options:0
success:^(UIImage *image, BOOL cached)
{

}
failure:nil];


}
dispatch_sync(dispatch_get_main_queue(), ^{
// perform main thread operation
});
});
}

但是上面的代码在第一次启动应用程序时只下载 30 到 40 张图像,之后它停止在缓存中下载图像,直到我停止应用程序并再次运行它然后第二次它在缓存中下载更多图像然后停止下载等等。

所以我的问题是为什么它在下载一些图像后停止,我希望它一直在缓存中下载图像,直到它下载完所有图像。

最佳答案

因此,您正在 View Controller 中执行此下载(正如您将其放入“viewDidLoad”方法中所证明的那样)。

可能发生的情况是,当您移动到另一个 View 时,或者当 View Controller 从内存中释放时,您在该 dispatch_queue 中使用的“manager”对象也正在当 View Controller 也离开内存时释放。

这就是下载停止的原因。

为了证明我是对的,请在屏幕上保留执行所有这些 GCD 工作的 View 。我打赌你会得到所有你的图片,而不仅仅是 30 或 40 张。

您需要做的是将这段代码移动到它可以存在的地方,直到它完成下载(也许不是 View Controller ,它只在用户想要看到的时候才会出现在屏幕上)?

关于iphone - 如何在使用SDWebimage显示之前先下载Cache中的网页图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17921798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com