等待10秒后,IPhone SendDelegateMessage无法返回

时间:2009-10-24 18:41:47

标签: iphone objective-c deadlock

在尝试将大型NSData对象转换为用于http传输的base64Encoding时,我不断从我的iPhone 3.0收到以下消息:

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

如果您没有在整个时间间隔内使用触摸屏(可以延长此等待时间),请提交错误。

我正在使用同步请求和触摸屏将被冻结,只有UIProgressView在上传数据时显示状态。 任何人都有任何好主意如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

正如它所说:你花了太长时间; D
网络视图到英语:“我打电话给代表,这需要太长时间,我无法继续显示HTML或运行JS”

不要阻止网页视图,否则会在一段时间后抱怨...

这样做同步请求?在主线程?永远不要那样做

更好的方式:

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

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

答案 1 :(得分:-1)

如果您使用的是UIWebView,那么我们需要先执行此操作,然后再转到下一个视图

webView.delegate = nil;