在单独的线程上NSURLDownload委托方法

时间:2009-09-08 19:06:55

标签: cocoa nsurlconnection nsurldownload

是否有人知道在单独的线程上接收NSURLDownload的委托方法的方法,即不是主线程?我正在使用NSOperationQueue来管理它们,但目前我需要使用performSelectorOnMainThread方法来使它工作得太好。这个问题是它驱动内核任务疯狂达到大约30%的CPU周期。奇怪的是,自从升级到SL后,当NSOperationQueue改变了行为时(这不是我在解散它,GCD摇滚!)

由于 科林

2 个答案:

答案 0 :(得分:2)

我的第一个问题是,您使用NSURLDownload做什么?您只是将一堆文件下载到磁盘,还是您真的想要内存中的数据?

  • 如果您正在将一堆文件下载到磁盘而您不想进行任何特殊处理,我首先尝试在主线程上启动所有NSURLDownloads,而不必费心去做NSOperationQueue ...我的意思是,我们谈论了多少次操作?它们可以同时运行吗?主线程上的回调不应该是一个太大的问题,除非你得到一些重量级的东西,当你得到通知你得到一些数据,在这种情况下似乎... ...

  • 否则,我会切换到使用NSURLConnection。它具体记录在你设置的线程上回调你,并且更灵活。当然,它不是那么高级,所以如果你真的想要将文件保存到磁盘,你将不得不自己编写I / O.不应该是一个巨大的困难 - 它就像四行额外的代码。

-W

答案 1 :(得分:0)

NSOperationQueue改变了行为,因为它是错误的。它现在看起来很稳固但是,它有不同的个性。 参考(http://www.mikeash.com/?page=pyblog/dont-use-nsoperationqueue.html

您能否提供有关您问题的更多信息?下载完成后你只需要通知吗?您是否一次进行多次下载?