2009-10-24 62 views
5

我一直從我的iPhone 3.0收到以下消息試圖大NSData對象轉換成base64Encoding用於HTTP傳輸時後返回:如果你沒有使用觸摸IPhone SendDelegateMessage失敗等待10秒鐘

void SendDelegateMessage(NSInvocation*): delegate failed to return after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode 

屏幕顯示整個時間間隔(可延長此等待時間),請提交錯誤。

我正在使用同步請求,並且在上傳數據時,只有UIProgressView顯示狀態,觸摸屏將凍結。 任何人有任何好主意如何解決這個問題?

+0

如果你有一個同步的請求,當Web視圖試圖打電話給你的委託它不會響應。我很確定這是什麼信息。 – nielsbot 2012-11-04 07:57:21

+0

不 - 這意味着:我打電話給一個委託,它需要很長的時間,我不能繼續顯示HTML或運行JS – 2014-02-09 12:03:21

回答

-1

如果您使用的是UIWebView那麼我們就需要先移動到下一個視圖

webView.delegate = nil; 
+0

你是對的,但這個問題的答案遠不近。這可以防止糟糕的訪問 – 2014-02-09 11:59:22

3

,因爲它說之前做到這一點:你花費太長時間; d
網絡以英語說:「我叫委託和它的時間太長,我無法繼續顯示HTML或運行JS」

不會阻止Web視圖或一段時間後,它會抱怨...

這樣做同步的請求?在主線上?從來沒有做到這一點

更好的辦法:

- webView:... { 
     dispatch_async(dispatch_get_global_queue(0,0), ^{ 
      //DO LONG RUNNING IN BG 

      dispatch_sync(dispatch_get_main_queue(), ^{ 
       //update UI 
      } 
     } 
}