UIWebView - 主循环模式kCFRunLoopDefaultMode

时间:2011-07-25 16:03:36

标签: iphone uiwebview

我正在使用方法loadData加载UIWebView。由于某些特定数据很长,我收到以下错误:

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

它发生在webViewDidFinishLoad之后。任何想法我怎么能找出我做错了什么?我没有使用任何JavaScript。

1 个答案:

答案 0 :(得分:1)

问题是网页视图不希望“卡住”调用可能会或可能不会返回的代理

因此它会在30秒后抛出错误,说这是DELEGATES错误,事情不会继续

你能做的是:

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

- (void)delayedDidFinish:(id)f {
    ...
}

这将让代理返回,然后在下次运行环回时运行东西

====

使用GCD,只需使用dispatch_async - 比performSelector:

更现代