0

これはメイン スレッドでは問題なく動作しますが、バックグラウンド スレッドで実行すると何らかの理由で動作しません。dispatch_async の呼び出しをコメントアウトするだけで、プログラムは正常に動作します!

コード:

NSString *requestString = [NSString stringWithFormat:@"http://www.songlyrics.com/index.php?section=search&searchW=%@+%@&submit=Search",actualSongName,actualSongArtist];
        NSLog(@"0");
        TFHpple *requestParser = [TFHpple hppleWithHTMLData:[NSData dataWithContentsOfURL:[NSURL URLWithString:requestString]]];
        NSLog(@"1");
        NSString *requestedURLXPathQuery = @"//a";
        NSArray *requestedStringsNodes = [requestParser searchWithXPathQuery:requestedURLXPathQuery];
        NSLog(@"2");

これはログに記録されるものです:

2012-10-11 21:39:05.636 SuperViewer[6612:110b] 0
2012-10-11 21:39:05.651 SuperViewer[6612:907] Unable to parse.
2012-10-11 21:39:06.520 SuperViewer[6612:110b] 1
2012-10-11 21:39:06.565 SuperViewer[6612:110b] 2

これはすべてバックグラウンド スレッドで実行されます。また、「requestString」変数とその問題をログに記録しました。

問題は何ですか?Hpple はバックグラウンド スレッドで実行されませんか?

ありがとう!

4

1 に答える 1

0

あなたの正確な問題が何であるかわかりません。ただし、dispatch_async を使用する代わりにNSThreadを使用してください。必ず使用してください

  -[NSObject performSelectorOnMainThread:withObject:waitUntilDone:] 

メインスレッドで実行する (UI インタラクティブ機能用)

于 2012-10-12T04:10:22.977 に答える