2010-03-02 79 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