rssフィードを読み込んでUITableViewsで表示するアプリケーションを構築しています。私はGoogleで検索し、ここでAIはLibXMLを使用することに決めました。XML文書を読み込んで解析すると、自分のGUIがフリーズする
私のアプリが起動すると、有効なインターネット接続があるかどうかをチェックし、rssフィードを取得してデータを抽出し、tableViewsでuiTabBarを作成します。最初のRSSフィードを解析してUITabBarを構築した後、私のuiTabBarの各ボタンには別のrssフィード(カテゴリ)があります。私は良いインターネット接続(無線LAN)と3Gでも私のアプリは本当に良い動作しますが、インターネット接続が私のアプリに苦しんでも。
私はすべてのフィードを次々と解析しているので、メインスレッドではGUIが応答しなくなり、問題になります。私は私のフィードを解析するためのlibxmlを使用
は、私はこのようにそれを実行します。
CXMLDocument *rssParser = [[[CXMLDocument alloc] initWithContentsOfURL:url options:0 error:nil] autorelease];
NSArray *resultDate = NULL;
resultDate = [rssParser nodesForXPath:@"//channel" error:nil];
for(CXMLElement *date in resultDate)
{
NSString *data = (NSString *)[[date childAtIndex:12] stringValue];
[self setLastBuildDate:[[self parseDate:data] copy]];
break;
}
NSArray *resultNodes = NULL;
resultNodes = [rssParser nodesForXPath:@"//item" error:nil];
for(CXMLElement *resultElement in resultNodes)
{
NSMutableDictionary *feed = [[NSMutableDictionary alloc] init];
int counter;
for(counter = 0; counter < [resultElement childCount]; counter++)
{
[feed setObject:[[resultElement childAtIndex:counter] stringValue] forKey:[[resultElement childAtIndex:counter] name]];
}
[links addObject:[feed objectForKey:@"link"]];
[feedsList addObject:[feed copy]];
[feed release];
}
[newsTable reloadData];
私はuitabbar上のボタンを押したときにのみ、最初のボタンの飼料や他のものを解析しようとしましたが、私-didselectitemイベントでフィードを取得して解析する関数を呼び出すことはできません。
今、私は主なものではない別のスレッドでそれらを解析することを考えていた。誰かが私にいくつかのポインタを与えることができますか?
はNSOperationとNSOperationQueueに見て、事前
それは動作します、ありがとうございます。 –