我有一个iPhone应用程序,它使用ASIHTTPRequest与我服务器上的REST服务进行通信。当我在模拟器上运行时,它运行得很好,但是当我自己上手机时,我会发现奇怪的行为。
我第一次点击发起请求的按钮时,我立即收到结果,一切都很好。从那时起,当我单击按钮启动连接时,连接大约需要2-3分钟。几乎看起来我首先开始的ASIHTTPRequest(并且我已经收到了正确的结果)还没有完成。在开始下一个请求之前,是否需要使用某种魔法来终止原始请求?我假设自从-start方法返回后,我从服务器得到原始请求完成的结果,我可以启动另一个。
有什么想法吗?
由于
- 史蒂夫
答案 0 :(得分:6)
[request setShouldAttemptPersistentConnection:NO];
答案 1 :(得分:2)
你不应该调用-start方法,它属于NSOperation。 ASIHTTPRequest接口是-startSynchronous或-startAsynchronous。
但是,强烈建议使用异步调用,否则您的主线程(即UI)将被阻止。
来自ASIHTTPRequest文档[1]
一般来说,你应该使用 异步请求优先于 同步请求。当你使用 ASIHTTPRequest同步来自 主线程,您的应用程序的用户 界面将锁定并成为 无法使用的持续时间 请求。仅同步请求 真的适合没有的软件 UI(就像从脚本运行的脚本) 终端),或者如果你正在运行 从单独的线程请求 你维持(也许来自你的内心) 例如,拥有NSOperation。