0

在此代码中,从我的应用程序中查询可访问网络(“ http://soxxx9.cafe24.com/event.php ”)

   NSString * szURL =[NSString stringWithFormat:@"http://soxxx9.cafe24.com/event.php"];

   NSURL *url = [NSURL URLWithString:[szURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding ]];

   NSString *strData;
   while(1)
  {
    NSError *error = nil;
    strData = [NSString stringWithContentsOfURL:url
                                             encoding:NSUTF8StringEncoding
                                                error:&error];
    if(!error)
       break;
    //String data is not owned by me, no need to release
}

如果你有更好的方法,请教我。

4

2 回答 2

1

当网络中断时,此代码似乎非常耗电:您将尝试数百万次下载无法访问的内容......

查看 Apple 提供的 Reachability 类(http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html)。你会在 gitHub 上找到 ARCified 版本(例如https://github.com/tonymillion/Reachability )。

这个想法是注册有关网络可达性的通知。

因此,在您的代码中:

  1. 在检索您想要的字符串之前检查网络资源的可用性。
  2. 如果可用,请使用您的代码而不使用 while(TRUE)
  3. 在您的代码中检索客户端 = 时检查您的字符串是否有任何错误

如果网络不可用,您必须通知用户网络不可达,并注册可达性通知,以便在再次可达时立即检索您的字符串。

于 2013-03-12T08:34:23.543 回答
0

你应该有一个类来为你处理连接。通过这种方式,您可以更好地控制正在发生的事情。MKNetworkKit是一个解决方案,你可以在这里查看

于 2012-05-11T09:45:00.270 回答