【发布时间】:2012-07-20 08:05:01
【问题描述】:
我正在使用 NSURLConnection 向我的 web 服务发出一些 http 请求,它返回一个大文本文件。显然这会阻塞主线程并增加延迟,所以我想在后台处理它。顺便说一句,我意识到有第三方框架可以处理这个特定的工作/情况,但我自己编写代码是因为我需要了解 iOS 上的多线程。
我可以分离一个 NSThread 或将 NSURLConnection 代码在一个块中传递给 GCD。两种方式最初都可以正常工作(建立http连接并发送请求)。问题是如何从服务器取回数据。让我解释一下......当我的网络服务发回数据时,我的应用程序通过来自 NSURLConnectionDelegate 协议的回调得到通知。但是当这种情况发生时,我的分离线程已经退出了它的目标方法,或者该块已经被 GCD 处理并且它不在队列中(取决于我使用了哪种方法)。基本上,我的应用不会注意到回调(当然,除非我使用的是 dispatch_main_queue)。
在每种情况下解决此问题的“正确”objective-c 方法是什么?
感谢任何指导
【问题讨论】:
-
对我来说听起来你没有正确使用 GCD。您应该发布代码。
-
NSURLConnection 有一个 sendAsynchronousRequest:queue:completionHandler: 方法。你可以使用它。
标签: objective-c