我们可以停止同步请求吗?怎么样?

问题描述:

如果有人能够帮助我如何停止向服务器发出的同步请求,尤其是从背景移动到前景时,将不胜感激。我们可以停止同步请求吗?怎么样?

在此先感谢。

如果您使用正常的NSURLConnection,您可以将它发送给cancel命令。 (docs

INIT喜欢:

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; 
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

取消像这样:

[connection cancel]; 
+0

嘿谢谢你的回复,但我没有获得连接变量以及它正在库文件中完成。请建议我为上述评论提出的最佳解决方案... – Nitu 2012-01-19 06:49:55

+0

Quick'n dirty:编辑lib必须公开连接。例如。像这样: - (NSURLConnection *)connection {return _connection; }或者,您可能想要自己处理连接,它足够容易,为什么要使用lib? – Wolfert 2012-01-19 14:14:09

我们是在谈论+[NSURLConnection sendSynchronousRequest:returningResponse:error:]?在这种情况下,您无法停止此请求。

如果您需要在航班中途停止网络操作,那么您需要使用异步API。我个人更喜欢使用NSURLConnection推出我自己的产品,以及当前任务的最少工作量,通常是NSOperation或者只是一些GCD。即使您选择使用其他方法,我也强烈建议您学习如何使用NSURLConnection

其中一个这样的其他方法是AFNetworking,该包装NSURLConnectionNSOperation,您可以拨打cancel

+0

嘿,谢谢你,我有一些使用同步连接的库文件,现在无法修改代码。我在另一个线程中调用服务器,并在从后台导航到前台时,我正在检查该线程是否仍在执行,如果是这样,我取消它以避免崩溃,但是我仍然在低网络连接中崩溃“iphone未能及时恢复”。我想解决这个问题,你能帮我解决吗? – Nitu 2012-01-18 12:09:32

+0

@Nitu实际上并没有实施取消。当你的应用程序被要求恢复时,你有20秒的时间来回应,否则看门狗会杀死你。更改代码不使用同步网络访问是您唯一的解决方案。 – PeyloW 2012-01-18 15:23:44

+0

Hey Peylow请问你能清楚一点。谢谢。 – Nitu 2012-01-19 06:33:40