2

我刚刚注意到 webViewDidFinishLoad 方法阻塞了整个应用程序,所以我什至不能触摸任何按钮。

我需要解析 UIWebView 的结果页面,这可能需要很多时间。那么在不阻塞整个应用程序的情况下解析它的最佳方法是什么?也许创建另一个线程?

4

2 回答 2

3

使用 GCD 在后台解析它:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    // Get the contents from the UIWebView (in the main thread)
    NSString *data = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent"];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        // Parse the data here

        dispatch_sync(dispatch_get_main_queue(), ^{

            // Update the UI here

        });
    });
}
于 2013-05-13T11:09:29.423 回答
0

-webViewDidFinishLoad在主线程上调用是正常的。您需要做的是获取 html 并通过将其分派到另一个队列来执行解析操作。

于 2013-05-13T11:09:53.027 回答