将NSOperation添加到启动异步ASIHTTPRequest的NSOperationQueue

Bry*_*yan 2 iphone asynchronous nsoperation asihttprequest nsoperationqueue

因此,我正在尝试执行所有在后台线程上下载数据的REST调用,以便UI保持响应.

我有一个包含NSOperationQueue的viewcontroller.我创建了一个我的导入器类的实例,它是NSOperation的子类.在我的导入器的main()方法中,我正在设置ASIHTTPDataRequest.我创建了请求,然后是开始请求的时间.

问题:通过在请求上调用"startAsynchronous"来启动请求时遇到了问题.委托回调永远不会被调用.它就像请求启动,下载其数据,但从不调用委托回调方法.

我的解决方案:当我同步启动请求时,一切似乎都运行正常(即回调等).这是正确的解决方案吗?

为什么同步调用有效,而不是异步?在Apples"TopSongs"示例之后,我正在为我的导入器类建模.

tc.*_*tc. 6

如果从主线程运行它,ASIHTTPRequest本身不应该阻止UI.

  • ASIHTTPRequest不是设计为从后台线程运行.[ASIHTTPRequest requestFinished]调用主线程上的"完成"回调; 它永远不会被后台线程接收,因此后台线程的运行循环永远不会运行.
  • 无论如何, ASIHTTPRequest是一个NSOperation .这是一个实现细节.
  • 默认情况下,ASIHTTPRequest在后台线程中运行其网络代码,因此您不太可能通过将其粘贴到另一个线程中而获得很多好处.

如果它正在解析需要很长时间的数据,请将其粘贴在操作中.