【问题标题】:NSURLConnection doesn't startNSURLConnection 没有启动
【发布时间】:2012-05-10 11:58:06
【问题描述】:

我正在编写基于位置的应用程序,通过 API 获取当前/其他地方的 NSURLConnection 的天气信息。第一次我发送请求它的工作成功。但是下次我想在 NSURLConnection 没有调用任何委托方法时引用相同位置的信息时它不起作用。

这是我的代码:

NSString *strs=[@"http://www.earthtools.org/timezone-1.1/" stringByAppendingString:[NSString stringWithFormat:@"%@/%@",place.latitude,place.longitude]];

NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:strs]];

self.reqTimeZone=[NSURLConnection connectionWithRequest:request delegate:self];
[self.reqTimeZone start]; 

【问题讨论】:

  • 这段代码是在主线程还是后台线程上执行的?如果您在后台线程上运行,则需要将连接附加到线程的运行循环。

标签: iphone objective-c xcode


【解决方案1】:

我假设您的意思是 NSURLConnectionNSConnection 不存在)。 NSURLConnection 只能使用一次。见Reusing an instance of NSURLConnection

NSURLConnection 的另一个问题是它必须在带有 runloop 的线程上运行。主线程自动有一个运行循环,但在 GCD 和NSOperation 线程上调用的方法需要显式创建运行循环。实际上,您可能不需要在后台线程上运行NSURLConnection。下载操作不会阻塞主线程。如果您决定在运行循环上运行NSURLConnection,最简单的方法可能是创建一个NSOperation 子类并在-main 内创建运行循环。

【讨论】:

  • 我发送了 NSURLConnection 请求它工作正常。现在我想刷新信息,即重新发送 NSURLConnection.Refresh 在从按钮的 IBAction 调用时工作。但不能从 NSThread 方法工作。我该如何解决这个问题。感谢重播
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多