NSURLSession
是NSURLConnection
的重构,并引入了一些新功能。我一直在处理使用这两者的应用程序的问题,我想知道这是否正常。或者,在添加NSURLConnection
时,是否有必要完全放弃NSURLSession
方法?
具体来说,发生的事情是,似乎是随机的,发出请求并且没有任何回复。如果webView
被问及[webView isLoading]
,则答案为YES
,但connectionDidFinishLoading:
,URLSession:didBecomeIvalidWithError:
和webView:didFailLoadWithError:
均未被调用。此外,要求网页视图停止使用[webView stopLoading]
加载似乎不起作用,因为[webView isLoading]
似乎仍然是YES
。
如果这听起来很熟悉,或许有人可以给我一些尝试的建议。我的想法已经不多了。如果在使用NSURLConnection
时无法安全地使用NSURLSession
,我只需要重构以便不再使用NSURLConnection
,但我不愿意,如果我不知道&{如果这样做或者不这样做就不能解决问题。
答案 0 :(得分:0)
听起来像你有线程问题。与NSURLSession的不同之处在于代理在后台线程上触发,因此这些方法的任何直接UI更新都无法正常工作,您需要先将其转移回主线程。除非您正在进行大量上传或下载,否则您可能不需要该功能。要重新获得NSURLConnection的原始主线程设计,您可以使用主操作队列创建NSURLSession配置(表示主线程):
[NSURLSession sessionWithConfiguration:nil delegate:nil delegateQueue:[NSOperationQueue mainQueue]];
现在你的所有代表都是主线程。您可以使用[NSThread isMainThread]验证这一点,然后您可以根据需要更新UI。