使用警报视图处理超时 - iOS

时间:2013-11-13 12:36:09

标签: ios nsurlconnection uialertview nsurlrequest

是否可以使用UIAlert处理请求超时?我想告诉用户有一段时间了。我设置0.0只是为了测试它是否会发生。日志不会打印出来,所以我不相信我正在处理纠正

request.timeoutInterval=0.0;

并处理它:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
if(error.code == NSURLErrorTimedOut){
    NSLog(@"Time out");
   }
}

我正在使用NSURLConnectionDelegateNSURLConnectionDownloadDelegate

感谢。

1 个答案:

答案 0 :(得分:0)

您可以找到所有相关错误代码here的列表。请注意,-1009是kCFURLErrorNotConnectedToInternet。要强制超时,您需要能够禁止实际发送URL,或者找到一个刚进入黑洞的URL。

Apple捆绑Network Link Conditioner与Xcode(我相信它的网络工具)。关于此工具on NSHipster有一篇很棒的文章。

另一种(我相信)获得超时的方法是在发送请求后立即切换到另一个应用程序,将你的应用程序置于后台。等待5分钟,切换回来,查看日志。你可以做的是在一个演示应用程序中不断发送NSURLConnections - 也就是说,一旦第一次返回,发送另一个。所以总有一个杰出的。现在切换你的应用程序 - 切换到模拟器中的另一个应用程序 - 等待,然后返回。您应该能够以这种方式捕捉条件,您可以看到更改timeoutinterval值的影响。

关于iOS网络的私人Apple论坛有一个很长的关于超时的帖子 - 你可能能够找到它。最后,系统强制执行一个相当长的最小值(我记得),你可以使它更长但不短。这种隐藏的行为肯定会困扰很多人。这个问题的回应者是Quinn "The Eskimo",他是Apple最有经验的网络工程师之一。