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 に答える