【问题标题】:NSURLConnection and sendAsynchronousRequest:queue:completionHandler: - does the completion block run in the main threadNSURLConnection 和 sendAsynchronousRequest:queue:completionHandler: - 完成块是否在主线程中运行
【发布时间】:2012-11-18 12:43:52
【问题描述】:

如果我将NSURLConnectionsendAsynchronousRequest:queue:completionHandler: 一起使用,我是否需要在完成处理程序中采取任何特别的预防措施?具体来说,通过 NSURLConnection 直接异步发送是否与使用 dispatch_async 相同/相似,因为完成块需要返回到主线程才能与 UI 交互?

例如:在使用dispatch_async与UI交互(可能是错误的词)后,应用程序必须使用performSelectorOnMainThread

sendAsynchronousRequest:queue:completionHandler: 是否考虑过这一点?

注意:我发现了类似的问题,但不是这个。例如,在Does NSURLConnection block the main thread? indiekiduk 中明确指出它是一个新线程,尽管是一个内部线程——我认为这是有缺陷的,因为我认为它只是在运行循环的末尾——但我仍在学习并且可能/可能是错的。

【问题讨论】:

    标签: ios asynchronous nsurlconnection


    【解决方案1】:

    NSURLConnection 的文档将队列参数声明为sendAsynchronousRequest:queue:completionHandler:

    队列
    当请求完成或>失败时,处理程序块被分派到的操作队列。

    该块将在设置传入队列的任何线程上执行。

    【讨论】:

      【解决方案2】:

      NSURLConnection sendAsync 安排在 AFAIK 上的线程的 RunLoop 上 所以这个块在你启动它的线程中被调用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-25
        • 1970-01-01
        相关资源
        最近更新 更多