2009-10-24 59 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 
      } 
     } 
}