gpt4 book ai didi

objective-c - 同时 NSURL 下载

转载 作者:行者123 更新时间:2023-12-03 16:44:39 25 4
gpt4 key购买 nike

我有一个 Cocoa Mac 应用程序,设置为使用 NSURLDownload 将文件下载到特定文件夹。一次下载一次效果非常好。但是,如果我尝试启动多个下载,除了最后一个之外的所有下载都会立即失败。

有没有办法使用 NSURLDownload 进行多个同时下载?或者按顺序排列多个要下载的 URL 的好方法是什么?或者是否有更合适的方法来完成此操作(NSURLConnection 似乎是可能的,但我不确定是否可以像使用 NSURLDownload 一样设置下载位置和文件名)?

最佳答案

每个 NSURLDownload 代表一个下载实例。您可能会尝试多次重复使用同一个。它本质上是一个已经使用后台线程的异步系统。以下是基于 Apple 示例代码的示例:

 - (void)startDownloadingURL:sender
{
// Create a couple requests.
NSURLRequest *requestOne = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.apple.com"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];

NSURLRequest *requestTwo = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://stackoverflow.com"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];

// Create two download instances
NSURLDownload *downloadOne = [[NSURLDownload alloc] initWithRequest:requestOne delegate:self];
NSURLDownload *downloadTwo = [[NSURLDownload alloc] initWithRequest:requestTwo delegate:self];

if (downloadOne) {
// Set the destination file.
[downloadOne setDestination:@"/tmp" allowOverwrite:YES];
} else {
// inform the user that the download failed.
}
if (downloadTwo) {
// Set the destination file.
[downloadTwo setDestination:@"/tmp" allowOverwrite:YES];
} else {
// inform the user that the download failed.
}
}


- (void)download:(NSURLDownload *)download didFailWithError:(NSError *)error
{
// Release the connection.
[download release];

// Inform the user.
NSLog(@"Download failed! Error - %@ %@",
[error localizedDescription],
[[error userInfo] objectForKey:NSErrorFailingURLStringErrorKey]);
}

- (void)downloadDidFinish:(NSURLDownload *)download
{
NSLog(@"The download %@ has finished.", download)

// Release the download connection.
[download release];
}

如果您尝试对两个 NSURLRequest 使用相同的 NSURLDownload,那么它将终止之前的连接。

关于objective-c - 同时 NSURL 下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4119618/

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