代码之家  ›  专栏  ›  技术社区  ›  arachide

ASHTTP支持多线程吗?

  •  1
  • arachide  · 技术社区  · 15 年前

    ASHTTP支持多线程吗? 如果可以,我希望每个线程都链接到AuiprogressBar,我如何构造代码?

    谢谢

    交互开发

    2 回复  |  直到 15 年前
        1
  •  3
  •   Madhup Singh Yadav    15 年前

    是的,asihttpRequest一次可以处理超过一个请求。请参阅帮助 documentation 注意这部分。

    使用队列

    这个例子做了同样的事情 但我们已经创造了 我们请求的nsOperationQueue。

    使用nsOperationQueue(或 asinetWorkQueue,见下文)给出 对异步的更多控制 请求。使用队列时,只有 可以在运行特定数量的请求 同时。如果你增加更多 请求数超过队列的请求数 MaxConcurrentOperationCount属性, 请求将等待其他人 在他们开始之前完成。

    • (I部分)抓取背景:(ID)发送方 {如果![自队列] { [自设置队列:[[[nsOperationQueue alloc] init]自动释放]]; nsurl*url=[nsurl urlwithstring:@“ http://allseeing-i.com “”; asihttpRequest*请求= [asihttprequest-requestwithurl:url];
      [请求setdelegate:self];
      [请求 setdifinishselector:@selector(requestdone:); [请求] setdidfailselector:@selector(requestwentwrong:); [[self queue]addoperation:request]; //队列是nsOperationQueue_

    • (void)请求完成:(asihttpRequest*)请求nsstring*响应=[请求响应];

    • (无效)请求Wentwrong:(AsihttpRequest *)请求错误*错误=[请求错误];

    在上面的示例中,__queue_是 保留的nsOperationQueue属性 我们的控制器。

    我们重新设置自定义选择器, 将在请求时调用 成功或失败。如果不设置 这些,默认值(RequestFinished: 和requestfailed:)将用作 在上一个示例中。

    处理成功和失败 多个请求

    如果你需要处理成功和 许多不同类型的故障 请求,您有几个选项:

    1. 如果您的请求都是相同的广泛类型,但您希望 区分它们,你可以设置 的userinfo nsdictionary属性 每个请求都有自己的自定义数据 你可以读完/ 委托方法失败。
    2. 如果你需要在一个完全不同的 对于每个请求,设置不同的 设置完成选择器/ 为每个请求设置DidFailSelector
    3. 对于更复杂的情况,或者您想要解析响应的位置 在后台,创建 AsihttpRequest的子类 请求类型和覆盖 RequestFinished:和FailWithProblem:。

    希望这有帮助。

    谢谢,

    马杜普

        2
  •  1
  •   Kirk van Gorkom    15 年前

    请在此处查看示例代码: http://allseeing-i.com/ASIHTTPRequest/How-to-use

    它确实支持异步请求(多线程),您可以使用asinetWorkQueue来监视它们的进度。