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

是否有执行iPhone多线程任务的示例代码?

  •  1
  • BlueDolphin  · 技术社区  · 17 年前

    我有一些慢速的互联网任务需要保存和加载文件,我想在后台线程中执行这些慢速任务。我想知道这是否可行,如果可行,有任何示例代码吗?

    然后,在它完成之后,我希望它能回到主线程,这样我就可以更新UI了。

    4 回复  |  直到 13 年前
        1
  •  7
  •   Ben Gottlieb    17 年前

    请查看NSURLConnection。它将在后台加载一个NSURL(使用NSURLRequest),并发送有关其状态的委托方法。

        2
  •  2
  •   BobbyShaftoe    17 年前

    最终,您运行代码的设备只有一个处理器,不可能加载大量(千兆字节)的数据。最好的路由可能是Ben建议的(NSURLConnection异步),它为您提供了能够干净地取消和处理错误消息的额外优势。虽然它在技术上没有按照你可能认为的方式进行线程化,但它与事件循环很好地集成在一起,并且是非阻塞的。如果这还不够,我建议看看NSOperation和NSOperationQueue。您可以启动一个NSOperation子类对象并在那里执行下载(我仍然建议在那里异步执行,以便启用取消、暂停等)。

        3
  •  2
  •   wisequark    17 年前
        4
  •  1
  •   Kendall Helmstetter Gelner    17 年前

    如果你决定即使在使用异步HTTP调用收集数据后也需要一个后台线程,不要忘记将后台线程代码包装在一个新的NSAutoReelasePool中,然后在最后释放它。