在单独的线程上使用异步URL请求?

Ala*_*lan 1 iphone cocoa ios

我正在尝试用异步网络调用替换同步网络调用.问题是我们需要相对快速地超时,这几乎不可能与同步网络连接.

一个问题是代码的结构不支持异步网络调用,所以要做到这一点,我想通过创建一个单独的线程来"模拟"同步调用,该线程进行异步调用,并在线程调用中检查以查看如果呼叫已完成,或等待超时,则以先发生者为准.如果发生超时,请取消网络请求.

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

我是IOS开发和objective-c的新手,并且没有重写我们的操作队列如何处理网络请求,我很想知道我的方法的任何替代方案.

lxt*_*lxt 6

出于兴趣,您是否考虑过查看ASIHTTPRequest库,这是一个很好的开源CFNetwork包装器?它具有一些非常有用的异步网络功能,包括能够指定超时并传入要在完成和/或失败时执行的块.

听起来它可能会给你带来很多痛苦,特别是如果你是Objective-C和iOS的新手 - 不需要重新发明轮子,它可以显着简化网络操作.我们(我工作的公司)现在在我们绝大多数的构建中使用它.它非常稳定且非常实用 - 我还没有从我们与该库相关的分析中报告错误,而且数百万次会话中都存在错误.我不能推荐它来简化这些类型的网络任务.

既然你问过我的方法的潜在替代方案,我想我会建议它,虽然我明白你是否不愿意在你的项目中引入另一个库或者无法使用OSS代码.

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