簡體   English   中英

iPhone上的NSOperation,同步NSURLConnection和UIWebView

[英]NSOperation, Synchronous NSURLConnection, & UIWebView on iPhone

我有一個奇怪的問題。 這是設置:

  • 我有一個NSOperationQueue,我向其中添加了NSOperation子類對象。 這些使用NSURLConnection sendSynchronousRequest方法進行聯網。 據我了解,它們是完全異步的,因為它們是NSOperation,每個都有各自的線程。
  • 如果我在沒有任何后台聯網操作的情況下啟動我的應用程序,則將URL加載到UIWebView中就可以了。
  • 如果啟動我的應用程序並運行一些后台聯網操作,則將URL加載到UIWebView中會導致以下錯誤:

    錯誤域= WebKitErrorDomain代碼= 102 UserInfo = 0x1996d60“幀加載中斷”

並且任何隨后嘗試加載UIWebView的嘗試都會失敗,並顯示相同的錯誤。

我需要注意UIWebView和NSURLConnection之間是否存在一些奇怪的交互? 我的下一步是用完全異步的NSOperation替換同步調用,但這是一個怪異的錯誤,我以為我會問專家。

我已將錯誤隔離到NSURLConnection sendSynchronousRequest方法。 如果我從NSOperation調用此方法,則UIWebView會嚴重中斷。

102錯誤與WebKit中的某些“策略更改”錯誤有關,該錯誤在任何地方都很少/沒有記錄。

有人知道嗎 任何幫助是極大的贊賞!

編輯:看起來這是某種cookie問題。 如果Web服務器通過后台HTTP請求設置Cookie,為什么UIWebView無法加載的任何原因?

好,我知道了。

顯然,UIWebView不喜歡使用全局cookie存儲的URLConnection HTTPRequests(甚至ASIHTTPRequest)。 因此,現在我的應用程序拋出一個簡單的HTML頁面,以允許由UIWebView設置cookie,並且從此“下游”的每個人顯然都很高興,無論是通過NSOperation的API請求還是UIWebViews。

萬歲!

我不清楚您要在這里完成什么,UIWebView將自行異步加載NSRequest。 要檢查的一件事是通過使用NSOperation內部的performSelectorOnMainThread:方法之一,確保與UIWebView在代碼中進行的任何交互都在主線程上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM