作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人知道一种在单独的线程(即不是主线程)上接收 NSURLDownload 的委托(delegate)方法的方法吗?我正在使用 NSOperationQueue 来管理它们,但目前我需要使用 PerformSelectorOnMainThread 方法来让它工作。这样做的问题是,它会使内核任务疯狂地达到大约 30% 的 CPU 周期。奇怪的是,这种情况只在升级到 SL 后发生,当时 NSOperationQueue 改变了行为(不是我在鄙视它,GCD 很摇滚!)
谢谢科林
最佳答案
我的第一个问题是,你使用 NSURLDownload 来做什么?您只是将一堆文件下载到磁盘,还是真的想要内存中的数据?
如果您正在将一堆文件下载到磁盘并且不想进行任何特殊处理,我首先尝试在主线程上触发所有 NSURLDownloads,而不用担心NSOperationQueue...我的意思是,我们谈论的是多少个操作?它们可以同时运行吗?主线程上的回调不应该是太大的问题,除非当您收到通知您收到一些数据时正在做一些重量级的事情,在这种情况下,它看起来像......
否则,我会改用 NSURLConnection。它经过专门记录,可以在您设置的线程上给您回电,并且更加灵活。当然,它不是那么高级,因此如果您确实希望将文件保存到磁盘,则必须自己编写 I/O。不应该是一个巨大的困难 - 就像四行额外的代码。
-W
关于cocoa - 单独线程上的 NSURLDownload 委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1395769/
我是一名优秀的程序员,十分优秀!