【问题标题】:Multiple downloading of files wihtout locking the UI in ios在 ios 中锁定 UI 的情况下多次下载文件
【发布时间】:2012-03-27 10:21:07
【问题描述】:

我有一个包含不同网址的数组和一组按钮,每个链接都分配给每个按钮。单击按钮时,将下载分配给该特定按钮的 url 中的内容。用户可以同时点击多个按钮,从而可以同时进行多个下载。同时,用户应该能够在另一个视图中导航,这样下载过程就不会锁定 UI。哪一种是实现这一点的最佳和最简单的方法?请分享你的想法。 谢谢

【问题讨论】:

    标签: iphone ios multithreading download


    【解决方案1】:

    只需异步获取数据:

    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]];
                           }];
    

    【讨论】:

    • 感谢您的回复,有没有示例教程解释了如何使用它的完整过程?
    • 我不确定你的意思——如果你只是粘贴上面的 sn-p,数据将从 URL 中异步获取,这样主线程就不会被阻塞。下载数据后,您替换注释的任何代码都将在主线程上执行,responsedataerror 绑定基于请求的响应。你还需要知道什么?
    • 我想,它需要一些委托方法,这就是我问的原因。
    • 如果您需要做其他事情,我会在回答中提到它:)
    • 这很酷,谢谢。我已经给出了一个图片链接来代替 url,我开始下载,我怎样才能使用这个来获取数据?我是新手,请帮忙
    【解决方案2】:

    卢克,将 AFNetworkingASIHTTPRequest 库用于异步请求。

    【讨论】:

      【解决方案3】:

      您可以轻松实现异步NSURLConnection

      即每次用户点击该按钮时,您都会启动一个异步连接来完成脏活。

      有很多示例 - 最容易理解的博客样式示例之一是 Matt Gallagher 的 Cocoa With Love。 Here 是一个链接。

      该技术的要点是委托方法易于使用,您可以在其中捕获下载的每个文件。

      不要被同步风格的连接所诱惑,因为它不够灵活,而且您很难找到使用该技术下载多个文件的简单解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-13
        • 1970-01-01
        • 1970-01-01
        • 2011-07-13
        • 2011-03-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多