我有一个使用ASIHTTPRequest与服务器上的REST服务通信的iPhone应用程序。当我在模拟器上运行时,它工作得很好,但当我打开手机本身时,我得到了奇怪的行为。
当我第一次单击发起请求的按钮时,我立即得到结果,一切都很好。从那时起,当我点击按钮启动连接时,大约需要2-3分钟才能连接。看起来好像我首先启动的ASIHTTPRequest (并且我已经收到了正确的结果)还没有完成。在开始下一个请求之前,我是否需要使用某种魔法来终止原始请求?我假设由于-start方法返回,并且我从服务器得到了原始请求已完成的结果,我可以启动另一个请求。
有什么想法吗?
谢谢
--史蒂夫
发布于 2010-01-20 09:24:26
您不应该调用-start方法,它属于NSOperation。ASIHTTPRequest接口可以是-startSynchronous或-startAsynchronous。
但是,强烈建议使用异步调用,否则您的主线程(即UI)将被阻塞。
从ASIHTTPRequest documentation1
一般来说,您应该优先使用异步请求,而不是同步请求。当您从主线程同步使用ASIHTTPRequest时,您的应用程序的用户界面将锁定并在请求期间变得不可用。同步请求只适用于没有UI的软件(如从终端运行的脚本),或者如果您从维护的单独线程运行请求(例如,可能从您自己的NSOperation内部)。
1
发布于 2010-10-25 16:54:51
Steve -您所描述的是一个常见的问题,如果请求试图保持持久连接,就会出现这种问题。试试这个:
[request setShouldAttemptPersistentConnection:NO];https://stackoverflow.com/questions/2098364
复制相似问题