Я создаю приложение, которое будет читать RSS-каналы и представлять их в UITableViews. Я искал в Google и здесь, и я решил использовать LibXML.
Когда мое приложение запускается, оно проверяет, есть ли у него действующее интернет-соединение, и получает RSS-ленту, из которой я извлекаю некоторые данные и делаю uiTabBar с tableViews. После разбора первого RSS-канала и создания UITabBar для каждой кнопки в моем uiTabBar у меня будет свой RSS-канал (категория). Когда у меня хорошее интернет-соединение (Wi-Fi) и даже 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.
Теперь я думал о том, чтобы проанализировать их в другой ветке, а не в основной. Кто-нибудь может дать мне несколько советов?
заранее спасибо