2011-09-19 50 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