私にとって簡単な答えは、GCD、Grand Central Dispatch でした。コードを変更する必要はほとんどありませんでした...
私のコードは次のように始まりました...
self.table_array = [self.webQuery downloadAndParseXMLForTable];
[(UITableView *)self.view reloadData];
*webQuery は、Web から xml データをダウンロードして解析するカスタム オブジェクトです。**downloadAndParseXMLForTable は、XML ファイルを同期的にダウンロードして解析し、(NSArray *) オブジェクトを返してテーブル ビューをサポートするカスタム メソッドです。
以下の変更されたコードは、GCD を採用し、UI の応答性を維持するために必要な唯一の変更を示しています。
dispatch_queue_t table_download_queue = dispatch_queue_create("com.yourcompany.queuename", NULL);
dispatch_async(table_download_queue, ^{
self.table_array = [self.webQuery downloadAndParseXMLForTable];
dispatch_async(dispatch_get_main_queue(), ^{
[(UITableView *)self.view reloadData];
});
});
dispatch_release(table_download_queue);
それでおしまい!これが私の苦境にある他の人に役立つことを願っています...
乾杯、Z@K!
警告: WWDC 2010 で、GCD は現在 SECURE 送信をサポートできないことが言及されました。詳細は覚えていませんが、スピーカーのクインは非常に頑固でした。彼が提案したプロセスには NSOperation が必要だったと思います...