在尝试将大型NSData对象转换为用于http传输的base64Encoding时,我不断从我的iPhone 3.0收到以下消息:
void SendDelegateMessage(NSInvocation*): delegate failed to return after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode
如果您没有在整个时间间隔内使用触摸屏(可以延长此等待时间),请提交错误。
我正在使用同步请求和触摸屏将被冻结,只有UIProgressView在上传数据时显示状态。 任何人都有任何好主意如何解决这个问题?
答案 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;