我正在尝试用异步网络调用替换同步网络调用。问题是我们需要相对快速地超时,这对于同步网络连接几乎是不可能的。
一个问题是代码的结构不支持异步网络调用,所以要做到这一点,我想通过创建一个单独的线程来“模拟”同步调用,该线程进行异步调用,并且在线程调用中,检查呼叫是否已完成,或等待超时,以先发生者为准。如果发生超时,请取消网络请求。
如果我在新线程中创建连接,并且该线程存在,我的连接会结束吗?
我是IOS开发和objective-c的新手,并且没有重写我们的操作队列如何处理网络请求,我很想知道我的方法的任何替代方案。
答案 0 :(得分:6)
出于兴趣,您是否考虑过查看ASIHTTPRequest
库,这是一套很好的开源CFNetwork包装器?它具有一些非常有用的异步网络功能,包括能够指定超时并传入要在完成和/或失败时执行的块。
听起来它可能会给你带来很多痛苦,特别是如果你是Objective-C和iOS的新手 - 不需要重新发明轮子,它可以显着简化网络操作。我们(我工作的公司)现在在我们绝大多数的构建中使用它。它非常稳定且非常实用 - 我还没有从我们与该库相关的分析中报告错误,而且数百万次会话中都存在错误。我不能推荐它来简化这些网络任务。
既然你问过你的方法的潜在替代方案,我想我会建议它,虽然我明白你是否不愿意在你的项目中引入另一个库或无法使用OSS代码。
编辑:如果我为您提供了链接,会有所帮助! http://allseeing-i.com/ASIHTTPRequest/