作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个 iPad 应用程序,您可以在其中下载文件(如 PDF、doc 等)并离线查看它们。
我已经有了 View 部分,您可以将文件下载到文档目录。
就像现在一样,您需要等待下载完成才能继续。
这可以通过将它放在一个线程中来解决,但是当用户下载多个文件甚至多次下载同一个文件时会发生什么?
我的想法是创建一个下载队列,以查看进度。
工作流程:
最佳答案
NSURLConnection
已经是异步的了。您需要做的就是创建NSURLConnection
实例,将它们与您的数据结构相关联,并拥有它。
这是一个示例,我假设每个项目都有一个 UIView。如果您使用 TableView ,则不能指望 View 实例,而是将下载与 NSIndexPath 或其他东西相关联。
@implementation MyDownloadView
- (void)startDownload {
NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:myURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
[req setHTTPMethod:@"GET"];
// Set headers etc. if you need
[[[NSURLConnection alloc] initWithRequest:req delegate:self] autorelease];
[req release];
self.responseData = [[NSMutableData alloc] init];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
// Alternatively, store to a file so you don't run out of memory
[self.responseData appendData:data];
}
@end
关于objective-c - 在后台线程中下载多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6996752/
我是一名优秀的程序员,十分优秀!