NSURLSession和NSURLConnection兼容性

时间:2014-06-17 20:17:31

标签: ios nsurlconnection nsurlsession

NSURLSessionNSURLConnection的重构,并引入了一些新功能。我一直在处理使用这两者的应用程序的问题,我想知道这是否正常。或者,在添加NSURLConnection时,是否有必要完全放弃NSURLSession方法?

具体来说,发生的事情是,似乎是随机的,发出请求并且没有任何回复。如果webView被问及[webView isLoading],则答案为YES,但connectionDidFinishLoading:URLSession:didBecomeIvalidWithError:webView:didFailLoadWithError:均未被调用。此外,要求网页视图停止使用[webView stopLoading]加载似乎不起作用,因为[webView isLoading]似乎仍然是YES

如果这听起来很熟悉,或许有人可以给我一些尝试的建议。我的想法已经不多了。如果在使用NSURLConnection时无法安全地使用NSURLSession,我只需要重构以便不再使用NSURLConnection,但我不愿意,如果我不知道&{如果这样做或者不这样做就不能解决问题。

1 个答案:

答案 0 :(得分:0)

听起来像你有线程问题。与NSURLSession的不同之处在于代理在后台线程上触发,因此这些方法的任何直接UI更新都无法正常工作,您需要先将其转移回主线程。除非您正在进行大量上传或下载,否则您可能不需要该功能。要重新获得NSURLConnection的原始主线程设计,您可以使用主操作队列创建NSURLSession配置(表示主线程):

 [NSURLSession sessionWithConfiguration:nil delegate:nil delegateQueue:[NSOperationQueue mainQueue]];

现在你的所有代表都是主线程。您可以使用[NSThread isMainThread]验证这一点,然后您可以根据需要更新UI。