Я разбираю некоторые rss-каналы с сайта, и когда мой код достигает метода парсера foundCharacters, приложение закрывается с ошибкой exc_bad_access. Странно то, что когда я запускаю свое приложение в симуляторе, приложение работает без проблем. Это мой синтаксический анализ код:xml parser: parser foundCharacters error
#pragma mark NSXMLParser delegate
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([elementName isEqualToString:@"item"]) {
[item setObject:title forKey:@"title"];
[item setObject:link forKey:@"link"];
[feeds addObject:[item copy]];
}
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
element = elementName;
if ([element isEqualToString:@"item"]) {
item = [[NSMutableDictionary alloc] init];
title = [[NSMutableString alloc] init];
link = [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)strings {
if ([element isEqualToString:@"title"]) {
[title appendString:strings];
} else if ([element isEqualToString:@"link"]) {
[link appendString:strings];
}
}
- (void)parserDidEndDocument:(NSXMLParser *)parser {
[self.tableView reloadData];
}
Моя ошибка появляется, когда он достигает первую линию:
if ([element isEqualToString:@"title"]) {
[title appendString:strings];
} else if ([element isEqualToString:@"link"]) {
[link appendString:strings];
}
Когда я пытаюсь изменить эти строки с, например:
[title appendString:strings];
он отлично работает с основным отличием, что я не получаю ссылку для входа в RSS-канал. Другими словами, проблема заключается в проверке, если элемент равен строке @ "title". Спасибо.
Хотя здесь есть проблемы, я не уверен, почему вы получите плохой доступ (если вы не используете ARC). BTW, убедитесь, что 'didEndElement' устанавливает переменную' element' в 'nil'. В конце метода (иначе вы могли бы получить непреднамеренные дополнительные символы в значениях заголовка и ссылки). – Rob
ДА SIR !!! это я думаю. И я не понимаю, почему именно это происходит. Я установил переменную элемента в nil в didendelement, и она работает.! Нет ошибки. Большое спасибо за ваше вдохновение. – user3882720