Iphone UIWebView-主循环模式KCFRunlopDefaultMode

Iphone UIWebView-主循环模式KCFRunlopDefaultMode,iphone,uiwebview,Iphone,Uiwebview,我正在使用方法loadData加载UIWebView。对于一些相当长的特定数据,我得到以下错误: void SendDelegateMessage(NSInvocation*): delegate (webView:didFinishLoadForFrame:) failed to return after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode 它发生在webViewDidFinishLoad之后。你知道我

我正在使用方法
loadData
加载UIWebView。对于一些相当长的特定数据,我得到以下错误:

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

它发生在
webViewDidFinishLoad
之后。你知道我怎么才能知道我做错了什么吗?我没有使用任何javascript。

问题在于,web视图不希望在调用可能返回或可能不返回的委托时被“卡住”

所以它在30秒后抛出这个错误,说事情不继续是代表们的错

您可以做的是:

- (void)webview:(id)wv didFinishLoadForFrame:(id)f {
    [self performSelector:@selector(delayedDidFinish:) withObject:f afterDelay:0.0];
}

- (void)delayedDidFinish:(id)f {
    ...
}
这将允许委托返回,然后在下次运行循环时运行东西

====


有了GCD,只需使用
dispatch\u async
——比
performSelector更现代:

问题是web视图不希望调用可能返回或可能不返回的委托而“卡住”

所以它在30秒后抛出这个错误,说事情不继续是代表们的错

您可以做的是:

- (void)webview:(id)wv didFinishLoadForFrame:(id)f {
    [self performSelector:@selector(delayedDidFinish:) withObject:f afterDelay:0.0];
}

- (void)delayedDidFinish:(id)f {
    ...
}
这将允许委托返回,然后在下次运行循环时运行东西

====


有了GCD,只需使用
dispatch\u async
——比
performSelector更现代:

听起来您给它的数据太多了,回调超时了。尝试将数据切成两半并加载视图。继续对半剪切并加载,直到合适为止,然后您就会知道web视图可以处理多少。在调试过程中,在
webView:didFinishLoadForFrame:
中的某个断点处停止后,是否会发生这种情况?正如@Rayfleck所建议的,我剪切了数据,UIWebView成功加载了数据。这个问题通常是如何解决的?我可以看到UIWebView没有任何设置超时。我没有实现webView:didFinishLoadForFrame方法,因为我正在使用iPhone应用程序。根据该文档,该方法在代理WebFrameLoadDelegate上可用,而该代理不适用于iPhone开发人员。在该文档中,未提及对可在UIWebView中加载的数据的任何限制。。。我想我必须找出数据限制并分块加载UIWebView。我坚持使用相同的方法,但我正在加载一个包含Javascript的HTML文件的UIWebView。。如果你有任何想法,请告诉我……听起来你给它的数据太多了,回调超时了。尝试将数据切成两半并加载视图。继续对半剪切并加载,直到合适为止,然后您就会知道web视图可以处理多少。在调试过程中,在
webView:didFinishLoadForFrame:
中的某个断点处停止后,是否会发生这种情况?正如@Rayfleck所建议的,我剪切了数据,UIWebView成功加载了数据。这个问题通常是如何解决的?我可以看到UIWebView没有任何设置超时。我没有实现webView:didFinishLoadForFrame方法,因为我正在使用iPhone应用程序。根据该文档,该方法在代理WebFrameLoadDelegate上可用,而该代理不适用于iPhone开发人员。在该文档中,未提及对可在UIWebView中加载的数据的任何限制。。。我想我必须找出数据限制并分块加载UIWebView。我坚持使用相同的方法,但我正在加载一个包含Javascript的HTML文件的UIWebView。。如果你有任何想法,请告诉我。。。。