【发布时间】:2012-03-27 10:21:07
【问题描述】:
我有一个包含不同网址的数组和一组按钮,每个链接都分配给每个按钮。单击按钮时,将下载分配给该特定按钮的 url 中的内容。用户可以同时点击多个按钮,从而可以同时进行多个下载。同时,用户应该能够在另一个视图中导航,这样下载过程就不会锁定 UI。哪一种是实现这一点的最佳和最简单的方法?请分享你的想法。 谢谢
【问题讨论】:
标签: iphone ios multithreading download
我有一个包含不同网址的数组和一组按钮,每个链接都分配给每个按钮。单击按钮时,将下载分配给该特定按钮的 url 中的内容。用户可以同时点击多个按钮,从而可以同时进行多个下载。同时,用户应该能够在另一个视图中导航,这样下载过程就不会锁定 UI。哪一种是实现这一点的最佳和最简单的方法?请分享你的想法。 谢谢
【问题讨论】:
标签: iphone ios multithreading download
只需异步获取数据:
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
// The code here is executed when the response from the request comes back.
// The variable "data" will contain the response from the data.
// So you can do something like:
UIImage *anImage = [[UIImage alloc] initWithData:data]];
}];
【讨论】:
response、data 和error 绑定基于请求的响应。你还需要知道什么?
卢克,将 AFNetworking 或 ASIHTTPRequest 库用于异步请求。
【讨论】:
您可以轻松实现异步NSURLConnection
即每次用户点击该按钮时,您都会启动一个异步连接来完成脏活。
有很多示例 - 最容易理解的博客样式示例之一是 Matt Gallagher 的 Cocoa With Love。 Here 是一个链接。
该技术的要点是委托方法易于使用,您可以在其中捕获下载的每个文件。
不要被同步风格的连接所诱惑,因为它不够灵活,而且您很难找到使用该技术下载多个文件的简单解决方案。
【讨论】: