2010-03-02 45 views
0

我有一个奇怪的问题。这里是设置:NSOperation,同步NSURLConnection和iPhone上的UIWebView

  • 我有一个NSOperationQueue,我添加NSOperation子类对象。这些使用NSURLConnection sendSynchronousRequest方法进行联网。据我所知,这些都是完全异步的,因为它们是NSOperations,它们各自拥有自己的线程。
  • 如果我在没有任何后台网络操作的情况下启动我的应用程序,将URL加载到UIWebView中工作得很好。
  • 如果我启动我的应用程序,并运行一些后台的联网操作,网址载入此错误一个UIWebView结果:

    错误域= WebKitErrorDomain代码= 102的UserInfo = 0x1996d60“框架加载中断”

以及任何后续尝试加载UIWebView失败,并出现相同的错误。

UIWebView和NSURLConnection之间是否存在一些我需要注意的奇怪的交互?我的下一步是用完全异步的NSOperation替换同步调用,但这是一个奇怪的错误,我想我会问专家。

我已经隔离错误到NSURLConnection sendSynchronousRequest方法。如果我从NSOperation中调用这个,UIWebView就会崩溃。

102错误与WebKit中的某些“策略更改”错误有关,该错误在任何地方都很差/未记录。

有人有什么想法吗?任何帮助是极大的赞赏!

编辑:看起来像这是一种cookie的问题。如果Web服务器通过后台HTTP请求设置cookie,UIWebView无法加载的任何原因?

回答

5

好的,我已经想通了。

显然UIWebView不喜欢使用全局cookie存储的URLConnection HTTPRequests(甚至ASIHTTPRequest),直到它。所以现在我的应用程序抛出了一个简单的HTML页面,允许通过UIWebView设置cookie,并且每个“下游”的人都显然是快乐的露营者,通过NSOperation提供的API请求和UIWebViews。

Hooray!

+0

这当然不直观,但我会同意这种行为。在我的应用程序通过UIWebView加载第一个命中后,URLConnection开始按照预期行事。 – deafgreatdane 2012-03-16 02:20:13

0

我不清楚你在这里试图完成什么,一个UIWebView将自己加载一个NSRequest异步。需要检查的一件事就是确保您在UIWebView的代码中进行的任何交互位于主线程中,方法是使用NSOperation中的performSelectorOnMainThread:方法之一。

+0

执行后台网络(轮询API数据)的NSOperations完全独立于UIWebViews。这是问题。两者之间没有任何交互,这就是为什么这个bug非常令人发狂。 – Genericrich 2010-03-02 16:35:49