2011-03-21 32 views
1

我试图用异步代替一个同步网络调用。问题是我们需要相对快速地超时,而这对于同步网络连接几乎是不可能的。在单独的线程上使用异步URL请求?

一个问题是代码没有被构造为支持异步网络调用,所以为了做到这一点,我想通过创建一个单独的线程来进行异步调用,并在线程调用中“模拟”同步调用,检查呼叫是否结束,或者等待超时,以先发生者为准。如果发生超时,请取消网络请求。

如果我在一个新的线程中创建一个连接,并且该线程存在,我的连接会结束吗?

我是IOS开发和objective-c的新手,但很少重写我们的操作队列如何处理网络请求,我很想听听有关我的方法的其他替代方法。

回答

6

出于兴趣,你有没有想过看看ASIHTTPRequest库,一个很好的开源CFNetwork包装?它具有一些非常有用的异步网络功能,包括能够指定超时并通过块在完成和/或失败时执行。

听起来好像它可以为您节省很多痛苦,特别是如果您是Objective-C和iOS的新手 - 无需重新发明轮子,并且它可以显着简化网络操作。我们(我工作的公司)现在在我们的绝大多数构建中使用它。它非常稳定并且非常实用 - 我还没有从我们与图书馆相关的分析报告中得到一个错误报告,并且涉及数百万次会话。我不能推荐它足以简化这些网络任务。

既然您问过您的方法的潜在替代方案,我想我会建议它,但我明白,如果您不愿意引入另一个库或无法在您的项目中使用OSS代码。

编辑:如果我提供了一个链接,将有所帮助! http://allseeing-i.com/ASIHTTPRequest/

+0

对于ASIHTTPRequest +1;它为我节省了很多时间。 – zpasternack 2011-03-21 23:49:01