gpt4 book ai didi

iphone - 如何在不耽误其他所有事情的情况下下载图像?

转载 作者:行者123 更新时间:2023-12-03 20:19:51 25 4
gpt4 key购买 nike

我正在制作一个应用程序,允许您浏览网站上的图片。我目前正在使用以下方式下载图像:

 UIImage *myImage = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]];

效果很好,但可能很耗时。我首先下载了 20 张图像,但直到下载完所有图像大约需要 30 秒后我才能执行任何操作。

这一次的等待还不算太糟糕,但如果我想下载第21-40张图像,我还得再等30秒。

基本上,有没有一种方法可以一次下载这些图像而不中断任何动画?

谢谢。

最佳答案

当然,将下载任务放在一个线程中,并使用回调让您的程序知道每个图像何时完成。然后,您可以在图像加载完成时绘制图像,而不会占用应用程序的其余部分。 This link有一个模板可以用作示例。

这是一个快速但肮脏的例子:

- (void)downloadWorker:(NSString *)urlString
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [[UIImage alloc] initWithData:data];

[self performSelectorOnMainThread:@selector(imageLoaded:)
withObject:image
waitUntilDone:YES];
[image release];
[pool drain];
}

- (void)downloadImageOnThread:(NSString *)url
{
[NSThread detachNewThreadSelector:@selector(downloadWorker:)
toTarget:self
withObject:url];
}

- (void)imageLoaded:(UIImage *)image
{
// get the image into the UI
}

为要加载的每张图像调用 downloadImageOnThread,每个图像都会获得自己的线程,并且在每个图像完成时都会调用 imageLoaded

关于iphone - 如何在不耽误其他所有事情的情况下下载图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2368687/

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