2011-09-19 69 views
0

我使用SBJson从URL中检索数据。如何在下载前检查我是否可以访问URL。我想检查一下,如果没有网络连接,应用程序崩溃。如何检查网络访问SBJson URL

这里是我的代码

id response = [self objectWithUrl:[NSURL URLWithString:@"http://myurl.com/Service.svc/GetId"]]; 

*我使用stringWithUrl和objectWithUrl方法下载JSON。

回答

0

不要使用可达主线程上,以检测是否有网络连接。它不起作用,可以锁定30秒或更长时间,导致您的应用程序被终止。

相反,您应该尝试使用NSURLConnection下载数据 - 这将在需要时启动无线电。如果发生错误,您将收到回电。

所有的网络连接 - 包括域名查找 - 应该在辅助线程上或异步或至少是非阻塞的。对于NSURL,请使用NSURLConnection的异步回调。

您的应用程序可能会崩溃,因为您正在从主线程进行网络调用并锁定超过30秒,因此系统监视程序计时器会杀死您。查看Xcode中的崩溃日志应该验证。否则,你可能只是没有正确处理错误条件。

+0

没错,但Reachability示例演示了SCNetworkReachability API的异步使用。 Reachability示例中的ReadMe.txt警告您可能面临的问题。 – bandejapaisa