【问题标题】:Xcode - Create timeout for NSURLXcode - 为 NSURL 创建超时
【发布时间】:2014-10-03 13:15:53
【问题描述】:

我使用NSURL 从 MySQL 数据库加载一些东西。有时这很慢,应用程序停止运行,因为数据库没有响应。 我想我可以暂停一下,所以在例如之后3 秒后,应用停止加载 NSURL 并再次尝试或执行其他操作,例如 UIAlertView

请帮帮我! 珍妮丝

PS:我使用这段代码从数据库中加载这些东西:

-(void) loadSomething {
   NSError *error;
   NSString *urlString = @"http://someip/App/somefile.txt";
   NSURL *url = [NSURL URLWithString:urlString];

   @try {
      NSString *resultString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];

   }
   @catch (NSException *exception) {

      NSLog(@"Error");

   }

【问题讨论】:

  • Jannes 您是否考虑过异步下载图像,并让应用程序负责 UI?
  • 正如 Smiles 所说,异步执行此操作。永远不要阻塞主线程。顺便说一句,一旦你使用NSURLConnectionNSURLSessionAFNetworking 或其他任何东西,你也可以控制超时间隔,但因为你现在是异步执行的,你不会真正关心它和默认值超时可能没问题。
  • 在 NSURLConnection 中是否有任何方法,它会在出错时重试或在一段时间后无响应?

标签: mysql ios nsurl


【解决方案1】:

您的请求是synchronous request,这种类型的请求会冻结用户界面,您应该使用asynchronous request 来防止冻结。 这是一个 tutorial 请求异步/同步,应该可以帮助你。

否则可能会考虑使用框架“AFNETWorking”它大大简化了 NSURLConnection 和 NSURLRequest 的使用

【讨论】:

  • 我已经使用异步请求了。但我的网站有时会挂起。所以我需要一个超时。所以它会在 3 秒左右后重复 NSURL...
猜你喜欢
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多